geoportal-data-entry-app/src/main/java/org/gcube/portlets/user/geoportaldataentry/client/GeoPortalDataEntryApp.java

115 lines
4.1 KiB
Java

package org.gcube.portlets.user.geoportaldataentry.client;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.TreeMap;
import org.gcube.portlets.user.geoportaldataentry.client.ui.GeonaDataEntryMainForm;
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 <code>onModuleLoad()</code>.
*/
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 Messages messages = GWT.create(Messages.class);
private final HandlerManager eventBus = new HandlerManager(null);
private TreeMap<Integer, MetaDataProfileBean> mapOrderedGeoNaProfiles = new TreeMap<Integer, MetaDataProfileBean>();
private List<MetaDataProfileBean> orderedListMetadataProfilesForGeona = null;
/**
* This is the entry point method.
*/
public void onModuleLoad() {
String scope = "/gcube/devsec/devVRE";
String secondaryType = "GeoNaMetadata";
final GeonaDataEntryMainForm geoNaMainForm = new GeonaDataEntryMainForm();
MetadataProfileFormBuilderServiceAsync.Util.getInstance().getProfilesInTheScope(scope, secondaryType, new AsyncCallback<List<MetaDataProfileBean>>() {
@Override
public void onSuccess(List<MetaDataProfileBean> result) {
orderedListMetadataProfilesForGeona = setGeoNaFormOrder(result);
for (MetaDataProfileBean metaDataProfileBean : orderedListMetadataProfilesForGeona) {
CreateMetadataForm baseForm = new CreateMetadataForm(Arrays.asList(metaDataProfileBean));
boolean repeatibleForm = false;
String theMetaType = metaDataProfileBean.getType().toLowerCase();
if(theMetaType.contains("immagin") || theMetaType.contains("fine scavo")) {
repeatibleForm = true;
}
geoNaMainForm.addForm(baseForm, metaDataProfileBean.getType(),repeatibleForm);
}
}
@Override
public void onFailure(Throwable caught) {
}
});
//
RootPanel.get(DIV_PORTLET_ID).add(geoNaMainForm);
}
private List<MetaDataProfileBean> setGeoNaFormOrder(List<MetaDataProfileBean> listMetadataProfilesForGeona) {
mapOrderedGeoNaProfiles.clear();
for (MetaDataProfileBean metaDataProfileBean : listMetadataProfilesForGeona) {
String theMetaType = metaDataProfileBean.getType().toLowerCase();
if(theMetaType.contains("relazione di scavo")) {
mapOrderedGeoNaProfiles.put(1, metaDataProfileBean);
}else if(theMetaType.contains("immagin")) {
mapOrderedGeoNaProfiles.put(2, metaDataProfileBean);
}else if(theMetaType.contains("posizionamento")) {
mapOrderedGeoNaProfiles.put(3, metaDataProfileBean);
}else if(theMetaType.contains("fine scavo")) {
mapOrderedGeoNaProfiles.put(4, metaDataProfileBean);
}
}
GWT.log("Map size: "+mapOrderedGeoNaProfiles.size());
List<MetaDataProfileBean> orderedList = new ArrayList<MetaDataProfileBean>(mapOrderedGeoNaProfiles.size());
orderedList.addAll(mapOrderedGeoNaProfiles.values());
GWT.log("List ordered size: "+orderedList.size());
for (MetaDataProfileBean metaDataProfileBean : orderedList) {
GWT.log("Title: "+metaDataProfileBean.getTitle() + ", type: "+metaDataProfileBean.getType());
}
return orderedList;
}
}