package eu.eudat.logic.utilities.builders; import eu.eudat.logic.utilities.helpers.FieldFactory; 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 | 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 | 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 | IllegalAccessException e) { logger.error(e.getMessage(), e); } } return list; } public FieldData toFieldData(Object data, String type, Element dataElement) { if (dataElement != null && dataElement.hasAttribute("type")) { logger.info("Type " + type + " SubType " + dataElement.getAttribute("type")); return FieldFactory.fromData(type, data, dataElement.getAttribute("type")); } return FieldFactory.fromData(type, data); /*if (type.equals("combobox")) { if (dataElement != null) { if (dataElement.getAttribute("type").equals("autocomplete")) { return new AutoCompleteData().fromData(data); } else if (dataElement.getAttribute("type").equals("wordlist")) return new WordListData().fromData(data); } } if (type.equals("internalDmpEntities")) { if (dataElement != null) { if (dataElement.getAttribute("type").equals("researchers")) { return new ResearchersAutoCompleteData().fromData(data); } else if (dataElement.getAttribute("type").equals("datasets")) return new DatasetsAutoCompleteData().fromData(data); else if (dataElement.getAttribute("type").equals("dmps")) return new DMPsAutoCompleteData().fromData(data); } } if (type.equals("booleanDecision")) return new BooleanDecisionData().fromData(data); if (type.equals("radiobox")) return new RadioBoxData().fromData(data); if (type.equals("checkBox")) return new CheckBoxData().fromData(data); if (type.equals("freetext")) return new FreeTextData().fromData(data); if (type.equals("textarea")) return new TextAreaData().fromData(data); if (type.equals("richTextarea")) return new RichTextAreaData().fromData(data); if (type.equals("upload")) return new UploadData().fromData(data); // if (type.equals("table")) return (FieldData) new TableData().fromData(data); if (type.equals("datePicker")) return new DatePickerData().fromData(data); if (type.equals("externalDatasets")) return new ExternalDatasetsData().fromData(data); if (type.equals("dataRepositories")) return new DataRepositoriesData().fromData(data); if (type.equals("pubRepositories")) return new DataRepositoriesData().fromData(data); if (type.equals("journalRepositories")) return new DataRepositoriesData().fromData(data); if (type.equals("taxonomies")) return new TaxonomiesData().fromData(data); if (type.equals("licenses")) return new LicensesData().fromData(data); if (type.equals("publications")) return new PublicationsData().fromData(data); if (type.equals("registries")) return new RegistriesData().fromData(data); if (type.equals("services")) return new ServicesData().fromData(data); if (type.equals("tags")) return new TagsData().fromData(data); if (type.equals("researchers")) return new ResearcherData().fromData(data); if (type.equals("organizations")) return new OrganizationsData().fromData(data); if (type.equals("datasetIdentifier")) return new DatasetIdentifierData().fromData(data); if (type.equals("currency")) return new CurrencyData().fromData(data); if (type.equals("validation")) return new ValidationData().fromData(data);*/ //return null; } public FieldData toFieldData(Object data, String type) { if (data != null && ((Map) data).containsKey("type")) { return FieldFactory.fromData(type, data, (String) ((Map) data).get("type")); } return FieldFactory.fromData(type, data); /*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("richTextarea")) return (FieldData) new RichTextAreaData().fromData(data); if (type.equals("upload")) return (FieldData) new UploadData().fromData(data); // if (type.equals("table")) return (FieldData) new TableData().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("pubRepositories")) return (FieldData) new DataRepositoriesData().fromData(data); if (type.equals("journalRepositories")) return (FieldData) new DataRepositoriesData().fromData(data); if (type.equals("taxonomies")) return (FieldData) new TaxonomiesData().fromData(data); if (type.equals("licenses")) return (FieldData) new LicensesData().fromData(data); if (type.equals("publications")) return (FieldData) new PublicationsData().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;*/ } }