package org.gcube.portlets.user.geoportaldataentry.client; import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; import java.util.LinkedHashMap; import java.util.List; import java.util.TreeMap; import org.gcube.portlets.user.geoportaldataentry.client.ui.GeonaDataEntryMainForm; import org.gcube.portlets.user.geoportaldataentry.client.ui.GeonaMainPanel; import org.gcube.portlets.user.geoportaldataentry.client.ui.card.GeoNaFormCardModel; import org.gcube.portlets.widgets.mpformbuilder.client.MetadataProfileFormBuilderServiceAsync; import org.gcube.portlets.widgets.mpformbuilder.client.form.generic.CreateMetadataForm; import org.gcube.portlets.widgets.mpformbuilder.shared.metadata.MetaDataProfileBean; import com.google.gwt.core.client.EntryPoint; import com.google.gwt.core.client.GWT; import com.google.gwt.event.shared.HandlerManager; import com.google.gwt.user.client.rpc.AsyncCallback; import com.google.gwt.user.client.ui.RootPanel; /** * Entry point classes define onModuleLoad(). */ public class GeoPortalDataEntryApp implements EntryPoint { /** * The message displayed to the user when the server cannot be reached or * returns an error. */ private static final String SERVER_ERROR = "An error occurred while " + "attempting to contact the server. Please check your network " + "connection and try again."; private static final String DIV_PORTLET_ID = "geoportal-data-entry"; /** * Create a remote service proxy to talk to the server-side Greeting service. */ private final GreetingServiceAsync greetingService = GWT.create(GreetingService.class); private final HandlerManager eventBus = new HandlerManager(null); private LinkedHashMap mapForms = new LinkedHashMap(); //private List orderedListMetadataProfilesForGeona = null; /** * This is the entry point method. */ public void onModuleLoad() { String scope = "/gcube/devsec/devVRE"; String secondaryType = "GeoNaMetadata"; final GeonaMainPanel mainPanel = new GeonaMainPanel(); mainPanel.setLoaderVisible("Loading...", true); final GeonaDataEntryMainForm geoNaMainForm = new GeonaDataEntryMainForm(); MetadataProfileFormBuilderServiceAsync.Util.getInstance().getProfilesInTheScope(scope, secondaryType, new AsyncCallback>() { @Override public void onSuccess(List result) { Collection orderedCards = setGeoNaFormsOrder(result); //ordered values for (GeoNaFormCardModel geonaForm : orderedCards) { CreateMetadataForm baseForm = new CreateMetadataForm(Arrays.asList(geonaForm.getMetadataProfileBean())); geonaForm.setMetadataForm(baseForm); String key = geonaForm.getMetadataProfileBean().getType(); if(geonaForm.getFormCardTitle()!=null) { key = geonaForm.getFormCardTitle().getTitle(); } geoNaMainForm.addForm(key, geonaForm); mapForms.put(key, geonaForm); } mainPanel.setLoaderVisible("", false); } @Override public void onFailure(Throwable caught) { } }); mainPanel.addFormPanel(geoNaMainForm); // RootPanel.get(DIV_PORTLET_ID).add(mainPanel); } private Collection setGeoNaFormsOrder(List listMetadataProfilesForGeona) { TreeMap treemapOrderedGeoNaProfiles = new TreeMap(); List listUnknownType = new ArrayList(); for (MetaDataProfileBean metaDataProfileBean : listMetadataProfilesForGeona) { String theMetaType = metaDataProfileBean.getType().toLowerCase(); GeoNaFormCardModel geonaForm = new GeoNaFormCardModel(metaDataProfileBean, null, null); if(theMetaType.contains(ConcessioniFormCardTitle.INFORMAZIONI_DI_PROGETTO.getKey().toLowerCase())) { geonaForm.setFormCardTitle(ConcessioniFormCardTitle.INFORMAZIONI_DI_PROGETTO); treemapOrderedGeoNaProfiles.put(ConcessioniFormCardTitle.INFORMAZIONI_DI_PROGETTO.getOrder(), geonaForm); }else if(theMetaType.contains(ConcessioniFormCardTitle.RELAZIONI_DI_SCAVO.getKey().toLowerCase())) { geonaForm.setFormCardTitle(ConcessioniFormCardTitle.RELAZIONI_DI_SCAVO); treemapOrderedGeoNaProfiles.put(ConcessioniFormCardTitle.RELAZIONI_DI_SCAVO.getOrder(), geonaForm); }else if(theMetaType.contains(ConcessioniFormCardTitle.IMMAGINI_RAPPRESENTATIVE.getKey().toLowerCase())) { geonaForm.setFormCardTitle(ConcessioniFormCardTitle.IMMAGINI_RAPPRESENTATIVE); treemapOrderedGeoNaProfiles.put(ConcessioniFormCardTitle.IMMAGINI_RAPPRESENTATIVE.getOrder(), geonaForm); }else if(theMetaType.contains(ConcessioniFormCardTitle.POSIZIONAMENTO_DELL_AREA_DI_INDAGINE.getKey().toLowerCase())) { geonaForm.setFormCardTitle(ConcessioniFormCardTitle.POSIZIONAMENTO_DELL_AREA_DI_INDAGINE); treemapOrderedGeoNaProfiles.put(ConcessioniFormCardTitle.POSIZIONAMENTO_DELL_AREA_DI_INDAGINE.getOrder(), geonaForm); }else if(theMetaType.contains(ConcessioniFormCardTitle.PIANTA_DI_FINE_SCAVO.getKey().toLowerCase())) { geonaForm.setFormCardTitle(ConcessioniFormCardTitle.PIANTA_DI_FINE_SCAVO); treemapOrderedGeoNaProfiles.put(ConcessioniFormCardTitle.PIANTA_DI_FINE_SCAVO.getOrder(), geonaForm); }else { //adding to unknown list listUnknownType.add(geonaForm); } } //adding unknown types for (GeoNaFormCardModel geoNaFormCardModel : listUnknownType) { Integer highestKey = treemapOrderedGeoNaProfiles.lastKey(); highestKey++; treemapOrderedGeoNaProfiles.put(highestKey, geoNaFormCardModel); } GWT.log("Map size: "+treemapOrderedGeoNaProfiles.size()); return treemapOrderedGeoNaProfiles.values(); } }