package eu.eudat.logic.utilities.builders; import eu.eudat.models.data.entities.xmlmodels.datasetprofiledefinition.DatabaseViewStyleDefinition; import eu.eudat.models.data.components.commons.datafield.*; import eu.eudat.models.data.entities.xmlmodels.modeldefinition.DatabaseModelDefinition; import eu.eudat.logic.utilities.interfaces.ModelDefinition; import eu.eudat.logic.utilities.interfaces.ViewStyleDefinition; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.w3c.dom.Element; import java.util.LinkedList; import java.util.List; import java.util.Map; public class ModelBuilder { private static final Logger logger = LoggerFactory.getLogger(ModelBuilder.class); 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) { logger.error(e.getMessage(), e); } catch (IllegalAccessException e) { logger.error(e.getMessage(), e); } } 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) { logger.error(e.getMessage(), e); } catch (IllegalAccessException e) { logger.error(e.getMessage(), e); } } 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) { logger.error(e.getMessage(), e); } catch (IllegalAccessException e) { logger.error(e.getMessage(), e); } } 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("internalDmpEntities")) { if (dataElement != null) { if (dataElement.getAttribute("type").equals("researchers")) { return (FieldData) new ResearchersAutoCompleteData().fromData(data); } else if (dataElement.getAttribute("type").equals("datasets")) return (FieldData) new DatasetsAutoCompleteData().fromData(data); else if (dataElement.getAttribute("type").equals("dmps")) return (FieldData) new DMPsAutoCompleteData().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); if (type.equals("datePicker")) return (FieldData) new DatePickerData().fromData(data); if (type.equals("externalDatasets")) return (FieldData) new ExternalDatasetsData().fromData(data); if (type.equals("dataRepositories")) return (FieldData) new DataRepositoriesData().fromData(data); if (type.equals("registries")) return (FieldData) new RegistriesData().fromData(data); if (type.equals("services")) return (FieldData) new ServicesData().fromData(data); if (type.equals("tags")) return (FieldData) new TagsData().fromData(data); if (type.equals("researchers")) return (FieldData) new ResearcherData().fromData(data); if (type.equals("organizations")) return (FieldData) new OrganizationsData().fromData(data); if (type.equals("datasetIdentifier")) return (FieldData) new DatasetIdentifierData().fromData(data); if (type.equals("currency")) return (FieldData) new CurrencyData().fromData(data); if (type.equals("validation")) return (FieldData) new ValidationData().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("internalDmpEntities")) { String internalDmpEntitiesType = (String) ((Map) data).get("type"); if (internalDmpEntitiesType.equals("researchers")) { return (FieldData) new ResearchersAutoCompleteData().fromData(data); } else if (internalDmpEntitiesType.equals("datasets")) { return (FieldData) new DatasetsAutoCompleteData().fromData(data); } else if (internalDmpEntitiesType.equals("dmps")) { return (FieldData) new DMPsAutoCompleteData().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); if (type.equals("datePicker")) return (FieldData) new DatePickerData().fromData(data); if (type.equals("externalDatasets")) return (FieldData) new ExternalDatasetsData().fromData(data); if (type.equals("dataRepositories")) return (FieldData) new DataRepositoriesData().fromData(data); if (type.equals("registries")) return (FieldData) new RegistriesData().fromData(data); if (type.equals("services")) return (FieldData) new ServicesData().fromData(data); if (type.equals("tags")) return (FieldData) new TagsData().fromData(data); if (type.equals("researchers")) return (FieldData) new ResearcherData().fromData(data); if (type.equals("organizations")) return (FieldData) new OrganizationsData().fromData(data); if (type.equals("datasetIdentifier")) return (FieldData) new DatasetIdentifierData().fromData(data); if (type.equals("currency")) return (FieldData) new CurrencyData().fromData(data); if (type.equals("validation")) return (FieldData) new ValidationData().fromData(data); return null; } }