package eu.eudat.utilities.builders; import java.util.LinkedList; import java.util.List; import java.util.Map; import eu.eudat.models.components.commons.datafield.*; import org.w3c.dom.Element; import eu.eudat.entities.xmlmodels.modeldefinition.DatabaseModelDefinition; import eu.eudat.entities.xmlmodels.datasetprofiledefinition.DatabaseViewStyleDefinition; import eu.eudat.utilities.ModelDefinition; import eu.eudat.utilities.ViewStyleDefinition; 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; } }