argos/dmp-backend/src/main/java/eu/eudat/utilities/builders/ModelBuilder.java

96 lines
3.5 KiB
Java
Raw Normal View History

2017-12-15 11:05:51 +01:00
package eu.eudat.utilities.builders;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
2018-01-03 14:43:21 +01:00
import eu.eudat.models.components.commons.datafield.*;
2017-12-15 11:05:51 +01:00
import org.w3c.dom.Element;
import eu.eudat.entities.xmlmodels.modeldefinition.DatabaseModelDefinition;
2018-01-03 11:44:54 +01:00
import eu.eudat.entities.xmlmodels.datasetprofiledefinition.DatabaseViewStyleDefinition;
2017-12-15 11:05:51 +01:00
import eu.eudat.utilities.ModelDefinition;
import eu.eudat.utilities.ViewStyleDefinition;
public class ModelBuilder {
public <U extends ModelDefinition<T>,T extends DatabaseModelDefinition> List<T> toModelDefinition(List<U> items,Class<T> clazz){
List<T> list = new LinkedList<T>();
for(U item : items){
try {
list.add(item.toDatabaseDefinition(clazz.newInstance()));
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
return list;
}
public <U extends ViewStyleDefinition<T>,T extends DatabaseViewStyleDefinition> List<T> toViewStyleDefinition(List<U> items,Class<T> clazz){
List<T> list = new LinkedList<T>();
for(U item : items){
try {
list.add(item.toDatabaseDefinition(clazz.newInstance()));
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
return list;
}
public <U extends ViewStyleDefinition<T>,T extends DatabaseViewStyleDefinition> List<U> fromViewStyleDefinition(List<T> items,Class<U> clazz){
List<U> list = new LinkedList<U>();
for(T item : items){
try {
U modelItem = clazz.newInstance();
modelItem.fromDatabaseDefinition(item);
list.add(modelItem);
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
return list;
}
2018-01-03 15:19:38 +01:00
public <U> FieldData<U> toFieldData(Object data,String type,Element dataElement){
2017-12-15 11:05:51 +01:00
if(type.equals("combobox")){
if(dataElement!=null){
if(dataElement.getAttribute("type").equals("autocomplete")){
2018-01-03 15:19:38 +01:00
return (FieldData<U>) new AutoCompleteData().fromData(data);
2017-12-15 11:05:51 +01:00
}else if(dataElement.getAttribute("type").equals("wordlist"))
2018-01-03 15:19:38 +01:00
return (FieldData<U>) new WordListData().fromData(data);
2017-12-15 11:05:51 +01:00
}
}
2018-01-03 15:19:38 +01:00
if(type.equals("booleanDecision"))return (FieldData<U>) new BooleanDecisionData().fromData(data);
if(type.equals("radiobox"))return (FieldData<U>) new RadioBoxData().fromData(data);
if(type.equals("checkBox"))return (FieldData<U>) new CheckBoxData().fromData(data);
if(type.equals("freetext"))return (FieldData<U>) new FreeTextData().fromData(data);
if(type.equals("textarea"))return (FieldData<U>) new TextAreaData().fromData(data);
2017-12-15 11:05:51 +01:00
return null;
}
2018-01-03 15:19:38 +01:00
public <U> FieldData<U> toFieldData(Object data,String type){
2017-12-15 11:05:51 +01:00
if(type.equals("combobox")){
String comboboxType = (String)((Map<String,Object>)data).get("type");
if(comboboxType.equals("autocomplete")){
2018-01-03 11:44:54 +01:00
return (FieldData<U>) new AutoCompleteData().fromData(data);
2017-12-15 11:05:51 +01:00
}else if(comboboxType.equals("wordlist"))
2018-01-03 11:44:54 +01:00
return (FieldData<U>) new WordListData().fromData(data);
2017-12-15 11:05:51 +01:00
}
2018-01-03 15:19:38 +01:00
if(type.equals("booleanDecision"))return (FieldData<U>) new BooleanDecisionData().fromData(data);
2018-01-03 11:44:54 +01:00
if(type.equals("radiobox"))return (FieldData<U>) new RadioBoxData().fromData(data);
if(type.equals("checkBox"))return (FieldData<U>) new CheckBoxData().fromData(data);
2018-01-03 15:19:38 +01:00
if(type.equals("freetext"))return (FieldData<U>) new FreeTextData().fromData(data);
if(type.equals("textarea"))return (FieldData<U>) new TextAreaData().fromData(data);
2017-12-15 11:05:51 +01:00
return null;
}
}