package utilities.builders; import java.util.LinkedList; import java.util.List; import java.util.Map; import org.w3c.dom.Element; import entities.xmlmodels.modeldefinition.DatabaseModelDefinition; import entities.xmlmodels.viewstyledefinition.DatabaseViewStyleDefinition; import models.components.commons.datafield.AutoCompleteData; import models.components.commons.datafield.CheckBoxData; import models.components.commons.datafield.ComboBoxData; import models.components.commons.datafield.FieldData; import models.components.commons.datafield.RadioBoxData; import models.components.commons.datafield.WordListData; import utilities.ModelDefinition; import 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) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IllegalAccessException e) { // TODO Auto-generated catch block 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) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IllegalAccessException e) { // TODO Auto-generated catch block 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) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IllegalAccessException e) { // TODO Auto-generated catch block e.printStackTrace(); } } return list; } public > U toFieldData(Object data,String type,Element dataElement){ if(type.equals("combobox")){ if(dataElement!=null){ if(dataElement.getAttribute("type").equals("autocomplete")){ return (U) new AutoCompleteData().fromData(data); }else if(dataElement.getAttribute("type").equals("wordlist")) return (U) new WordListData().fromData(data); } } if(type.equals("booleanDecision"))return null; if(type.equals("radiobox"))return (U) new RadioBoxData().fromData(data); if(type.equals("checkBox"))return (U) new CheckBoxData().fromData(data); if(type.equals("freetext"))return null; return null; } public > U toFieldData(Object data,String type){ if(type.equals("combobox")){ String comboboxType = (String)((Map)data).get("type"); if(comboboxType.equals("autocomplete")){ return (U) new AutoCompleteData().fromData(data); }else if(comboboxType.equals("wordlist")) return (U) new WordListData().fromData(data); } if(type.equals("booleanDecision"))return null; if(type.equals("radiobox"))return (U) new RadioBoxData().fromData(data); if(type.equals("checkBox"))return (U) new CheckBoxData().fromData(data); if(type.equals("freetext"))return null; return null; } }