package javaHansya.main.test;
import java.util.ArrayList;
import java.util.List;
public class TestMain {
public static List<String[]> csvList;
public static void main(String[] args) {
// String ty = "01";
// if (ty == CodeEnum.YOMIURI_SB.getValue())
// System.out.println("OK");
// else
// System.out.println("NG");
// System.out.println(CodeEnum.getCodeEnum("SB"));
// csvデータ初期化
initCsv();
// java反射テスト
CheckUtil ck = CheckUtil.getInstance();
CsvDataCheckFormat cf = new CsvDataCheckFormat ();
try {
ck.checkCsvData (csvList, cf);
} catch (IllegalArgumentException e) {
// TODO 自動生成された catch ブロック
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO 自動生成された catch ブロック
e.printStackTrace();
} catch (NoSuchMethodException e) {
// TODO 自動生成された catch ブロック
e.printStackTrace();
} catch (SecurityException e) {
// TODO 自動生成された catch ブロック
e.printStackTrace();
}
}
private static void initCsv() {
// TODO 自動生成されたメソッド・スタブ
String [] s1 = new String[] {"","0","漢字"};
String [] s2 = new String[] {"01","9",""};
String [] s3 = new String[] {"05","","一二三四五六"};
csvList = new ArrayList<String[]> ();
csvList.add(s1);
csvList.add(s2);
csvList.add(s3);
}
}
package javaHansya.main.test;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
public class CheckUtil {
private static CheckUtil INSTANCE = null;
public static HashMap codeEnumMap = null;
public static CheckUtil getInstance() {
if(INSTANCE == null) {
INSTANCE = new CheckUtil();
}
return INSTANCE;
}
private CheckUtil() {
try {
getCodeEnum();
} catch (NoSuchMethodException e) {
// TODO 自動生成された catch ブロック
e.printStackTrace();
} catch (SecurityException e) {
// TODO 自動生成された catch ブロック
e.printStackTrace();
} catch (InstantiationException e) {
// TODO 自動生成された catch ブロック
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO 自動生成された catch ブロック
e.printStackTrace();
} catch (IllegalArgumentException e) {
// TODO 自動生成された catch ブロック
e.printStackTrace();
} catch (InvocationTargetException e) {
// TODO 自動生成された catch ブロック
e.printStackTrace();
}
}
public void getCodeEnum() throws NoSuchMethodException, SecurityException, InstantiationException,
IllegalAccessException, IllegalArgumentException, InvocationTargetException {
// CodeEnum対象取得
// CodeEnum ce = new CodeEnum ();
// Class<?> codeEnumClazz = ce.getClass();
Class codeEnumClazz = CodeEnum.class;
CodeEnum ce = (CodeEnum) codeEnumClazz.newInstance();
@SuppressWarnings("rawtypes")
Class[] innerClazz = codeEnumClazz.getDeclaredClasses();
if (codeEnumMap == null) {
codeEnumMap = new HashMap<String,Object[]> ();
}
for (@SuppressWarnings("rawtypes")Class tempClazz : innerClazz) {
// Method method = tempClazz.getMethod("values");
// Object oj = method.invoke(null);
String className = tempClazz.getName();
// System.out.println(className.substring(className.indexOf("$")+1));
Method[] methods = tempClazz.getDeclaredMethods();
List<?> list = Arrays.asList(tempClazz.getEnumConstants());
Object [] tempCodeEnumArray = new String[] {};
List tempCodeEnumList = new ArrayList ();
for(Object enu : list){
for(Method method : methods){
if(method.getName().startsWith("getV")){
tempCodeEnumList.add(method.invoke(enu).toString());
// System.out.println(method.invoke(enu));
}
}
}
tempCodeEnumArray = tempCodeEnumList.toArray();
codeEnumMap.put(className.substring(className.indexOf("$")+1), tempCodeEnumArray);
// int i = tempClazz.getModifiers();
// String s = Modifier.toString(i);
// Class tempEnumClazz = null;
// if (s.contains("static")) {
// tempEnumClazz = (Class) tempClazz.getConstructor().newInstance();
// } else {
// tempEnumClazz = (Class) tempClazz.getConstructor(codeEnumClazz.getClass()).newInstance(codeEnumClazz);
// }
//
// Method method2 = tempEnumClazz.getMethod("getValue");
// Object oj2 = method2.invoke(null);
}
String m = "";
System.out.println(m);
// Field[] codeEnumField = codeEnumClazz.getDeclaredFields();
// String s = "";
}
public boolean checkCsvData(List<String[]> csvList, Object obj)
throws IllegalArgumentException, IllegalAccessException, NoSuchMethodException, SecurityException {
// CheckFormat対象を取得
Class<?> checkClazz = obj.getClass();
Field[] checkField = checkClazz.getFields();
int dataCnt = 0;
for (String[] tempData : csvList) {
int colCnt = 0;
while (colCnt < tempData.length) {
String[] colFormat = (String[]) checkField[colCnt].get(obj);
// 1.必須チェック
if (!"".equals(colFormat[1])) {
if (tempData[colCnt] == null || "".equals(tempData[colCnt])) {
System.out.println(colFormat[0] + "がnull;" + (dataCnt+1) + "行目");
colCnt++;
continue;
}
}
// 2.型・桁数チェック
String[] typeCheck = colFormat[2].split(",");
for (String tempTypeCheck : typeCheck) {
switch (tempTypeCheck) {
case "isNum":
isNum(tempData[colCnt], colFormat[3], colFormat[4]);
break;
case "isNumAlp":
isNumAlp(tempData[colCnt], colFormat[3], colFormat[4]);
break;
case "isKanji":
isKanji(tempData[colCnt], colFormat[3], colFormat[4]);
break;
}
}
// 3.コード値内容チェック
if (!"".equals(colFormat[5])) {
Object[] codeEnumArray = codeEnumMap.get(colFormat[5]);
boolean codeErr = true;
for (Object oj : codeEnumArray) {
if (tempData[colCnt].equals(oj)) {
codeErr = false;
}
}
if (codeErr)
System.out.println("コード値がCodeNumに定義した値と一致しない。" + (dataCnt+1) + "行目");
}
//System.out.println(colFormat);
colCnt++;
}
dataCnt++;
}
return false;
}
private void isKanji(String columData, String min, String max) {
// TODO 自動生成されたメソッド・スタブ
}
private void isNumAlp(String columData, String min, String max) {
// TODO 自動生成されたメソッド・スタブ
}
private void isNum(String columData, String min, String max) {
// TODO 自動生成されたメソッド・スタブ
}
}
package javaHansya.main.test;
public class CsvDataCheckFormat {
public final String[] colum1 = {"読売新聞本社コード", "必須","isNum","1","3","YOMIURI"};
public final String[] colum2 = {"テスト用コード","必須", "isNumAlp,isTel","1","1","TESTCODE"};
public final String[] colum3 = {"テスト用漢字","", "isKanji","1","5",""};
}
package javaHansya.main.test;
public final class CodeEnum {
// 読売新聞本社コード
public static enum YOMIURI {
YOMIURI_TY("TY","01"),
YOMIURI_OS("OS","02"),
YOMIURI_SB("SB","03");
private String key;
private String value;
YOMIURI (String key, String value) {
this.key = key;
this.value = value;
}
public static YOMIURI getYomiuri (String key) {
for (YOMIURI ce : YOMIURI.values()) {
if (ce.getKey() == key) {
return ce;
}
}
return null;
}
public String getKey() { return key;}
public String getValue() { return value;}
}
// テスト用コード1
public static enum TESTCODE {
TESTCODE_TY("TY","0"),
TESTCODE_OS("OS","N"),
TESTCODE_SB("SB","8");
private String key;
private String value;
TESTCODE (String key, String value) {
this.key = key;
this.value = value;
}
public static TESTCODE getTestCode (String key) {
for (TESTCODE ce : TESTCODE.values()) {
if (ce.getKey() == key) {
return ce;
}
}
return null;
}
public String getKey() { return key;}
public String getValue() { return value;}
}
}