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 , T extends DatabaseModelDefinition> List toModelDefinition(List items, Class clazz) { List list = new LinkedList(); for (U item : items) { try { list.add(item.toDatabaseDefinition(clazz.newInstance())); } catch (InstantiationException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } } return list; } public , T extends DatabaseViewStyleDefinition> List toViewStyleDefinition(List items, Class clazz) { List list = new LinkedList(); for (U item : items) { try { list.add(item.toDatabaseDefinition(clazz.newInstance())); } catch (InstantiationException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } } return list; } public , T extends DatabaseViewStyleDefinition> List fromViewStyleDefinition(List items, Class clazz) { List list = new LinkedList(); 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 FieldData toFieldData(Object data, String type, Element dataElement) { if (type.equals("combobox")) { if (dataElement != null) { if (dataElement.getAttribute("type").equals("autocomplete")) { return (FieldData) new AutoCompleteData().fromData(data); } else if (dataElement.getAttribute("type").equals("wordlist")) return (FieldData) new WordListData().fromData(data); } } if (type.equals("booleanDecision")) return (FieldData) new BooleanDecisionData().fromData(data); if (type.equals("radiobox")) return (FieldData) new RadioBoxData().fromData(data); if (type.equals("checkBox")) return (FieldData) new CheckBoxData().fromData(data); if (type.equals("freetext")) return (FieldData) new FreeTextData().fromData(data); if (type.equals("textarea")) return (FieldData) new TextAreaData().fromData(data); return null; } public FieldData toFieldData(Object data, String type) { if (type.equals("combobox")) { String comboboxType = (String) ((Map) data).get("type"); if (comboboxType.equals("autocomplete")) { return (FieldData) new AutoCompleteData().fromData(data); } else if (comboboxType.equals("wordlist")) return (FieldData) new WordListData().fromData(data); } if (type.equals("booleanDecision")) return (FieldData) new BooleanDecisionData().fromData(data); if (type.equals("radiobox")) return (FieldData) new RadioBoxData().fromData(data); if (type.equals("checkBox")) return (FieldData) new CheckBoxData().fromData(data); if (type.equals("freetext")) return (FieldData) new FreeTextData().fromData(data); if (type.equals("textarea")) return (FieldData) new TextAreaData().fromData(data); return null; } }