package no.met.metadataeditor; import java.io.Serializable; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlRootElement; import no.met.metadataeditor.dataTypes.EditorTemplate; import no.met.metadataeditor.dataTypes.EditorVariable; import no.met.metadataeditor.dataTypes.EditorVariableContent; /** * Class used accessing editor configuration that are used to generate the editor UI. */ @XmlRootElement(name="editor", namespace="http://www.met.no/schema/metadataeditor/editorConfiguration") public class EditorConfiguration implements Serializable { private static final long serialVersionUID = -6228315858621721527L; private List<EditorPage> pages; public EditorConfiguration(){ pages = new ArrayList<>(); } /** * Add additional configuration from the editor variables to the editor widgets. * For instance maxOccurs and minOccurs. * @param varMap * @return */ public boolean configure(Map<String,EditorVariable> varMap){ for( EditorPage page : pages ) { page.configure(varMap); } return true; } public boolean generateEditorWidgetViews(Map<String,List<EditorVariableContent>> contentMap ){ boolean allPopulated = true; for( EditorPage page : pages ) { boolean pagePopulated = page.generateEditorWidgetViews(contentMap); if( !pagePopulated ){ allPopulated = false; } } return allPopulated; } public Map<String, List<EditorVariableContent>> getContent() { Map<String, List<EditorVariableContent>> content = new HashMap<>(); for( EditorPage page : pages ){ content.putAll(page.getContent()); } return content; } @XmlElement(name="page", namespace="http://www.met.no/schema/metadataeditor/editorConfiguration") public List<EditorPage> getPages() { return pages; } public void setPages(List<EditorPage> pages) { this.pages = pages; } private Map<String, EditorPage> getPageMap(){ Map<String, EditorPage> pageMap = new HashMap<>(); for( EditorPage page : pages ){ pageMap.put(page.getId(), page); } return pageMap; } public EditorPage getPage(String id){ Map<String,EditorPage> pageMap = getPageMap(); return pageMap.get(id); } public void validateVarNames(EditorTemplate editorTemplate) { Map<String,EditorVariable> varMap = editorTemplate.getVarMap(); for( EditorPage page : pages ){ page.validateVarNames(varMap); } } }