71 lines
2.1 KiB
Java
71 lines
2.1 KiB
Java
package com.codesdream.ase.component.datamanager;
|
|
|
|
import lombok.Data;
|
|
import org.springframework.context.annotation.Scope;
|
|
import org.springframework.stereotype.Component;
|
|
|
|
import javax.swing.text.html.parser.Entity;
|
|
import java.lang.reflect.Field;
|
|
import java.util.ArrayList;
|
|
import java.util.Collection;
|
|
|
|
/**
|
|
* 根据子系统及名称查找特定的Data Model
|
|
*/
|
|
@Data
|
|
@Component
|
|
@Scope("prototype")
|
|
public class DataModelSearcher {
|
|
public final String modelPath = "com.codesdream.ase.model.";
|
|
private Class<?> dataModelClass = null;
|
|
|
|
private boolean present;
|
|
|
|
public void getDataModelClass(String subSystem, String dataModel) {
|
|
dataModel = doCheckName(dataModel);
|
|
try {
|
|
dataModelClass = Class.forName(dataModelFullNameGenerator(subSystem, dataModel));
|
|
this.setPresent(true);
|
|
}catch (ClassNotFoundException e){
|
|
this.setPresent(false);
|
|
}
|
|
}
|
|
|
|
public Collection<String> getDataModelParamArgs() {
|
|
if(isPresent()) {
|
|
Collection<String> paramArgs = new ArrayList<>();
|
|
for (Field field : dataModelClass.getDeclaredFields()) {
|
|
paramArgs.add(field.getName());
|
|
}
|
|
return paramArgs;
|
|
}
|
|
return null;
|
|
}
|
|
|
|
public <T> T getDataModelInstance(Class<T> dataModelClass) {
|
|
if(isPresent()){
|
|
try {
|
|
return dataModelClass.newInstance();
|
|
} catch (IllegalAccessException e) {
|
|
this.setPresent(false);
|
|
return null;
|
|
} catch (InstantiationException e) {
|
|
e.printStackTrace();
|
|
return null;
|
|
}
|
|
}
|
|
return null;
|
|
}
|
|
|
|
public static String doCheckName(String string) {
|
|
char[] charArray = string.toCharArray();
|
|
if(Character.isLowerCase(charArray[0])) charArray[0] -= 32;
|
|
else return string;
|
|
return String.valueOf(charArray);
|
|
}
|
|
|
|
private String dataModelFullNameGenerator(String subSystem, String dataModel){
|
|
return new String(modelPath + subSystem + "." + dataModel);
|
|
}
|
|
}
|