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

94 lines
4.1 KiB
Java

package eu.eudat.utilities.builders;
import eu.eudat.entities.xmlmodels.datasetprofiledefinition.DatabaseViewStyleDefinition;
import eu.eudat.entities.xmlmodels.modeldefinition.DatabaseModelDefinition;
import eu.eudat.models.components.commons.datafield.*;
import eu.eudat.utilities.interfaces.ModelDefinition;
import eu.eudat.utilities.interfaces.ViewStyleDefinition;
import org.w3c.dom.Element;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
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;
}
public <U> FieldData<U> toFieldData(Object data, String type, Element dataElement) {
if (type.equals("combobox")) {
if (dataElement != null) {
if (dataElement.getAttribute("type").equals("autocomplete")) {
return (FieldData<U>) new AutoCompleteData().fromData(data);
} else if (dataElement.getAttribute("type").equals("wordlist"))
return (FieldData<U>) new WordListData().fromData(data);
}
}
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);
return null;
}
public <U> FieldData<U> toFieldData(Object data, String type) {
if (type.equals("combobox")) {
String comboboxType = (String) ((Map<String, Object>) data).get("type");
if (comboboxType.equals("autocomplete")) {
return (FieldData<U>) new AutoCompleteData().fromData(data);
} else if (comboboxType.equals("wordlist"))
return (FieldData<U>) new WordListData().fromData(data);
}
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);
return null;
}
}