Delete Operation done
This commit is contained in:
parent
bd49bd6f4e
commit
30cedd9376
|
@ -8,22 +8,28 @@ import java.util.List;
|
|||
import java.util.TreeMap;
|
||||
|
||||
import org.gcube.application.geoportalcommon.shared.GeoNaItemRef;
|
||||
import org.gcube.application.geoportalcommon.shared.products.ConcessioneDV;
|
||||
import org.gcube.portlets.user.geoportaldataentry.client.ConstantsGeoPortalDataEntryApp.ACTION_ON_ITEM;
|
||||
import org.gcube.portlets.user.geoportaldataentry.client.ConstantsGeoPortalDataEntryApp.RECORD_TYPE;
|
||||
import org.gcube.portlets.user.geoportaldataentry.client.events.ActionOnItemEvent;
|
||||
import org.gcube.portlets.user.geoportaldataentry.client.events.ActionOnItemEventHandler;
|
||||
import org.gcube.portlets.user.geoportaldataentry.client.events.CreateNewProjectEvent;
|
||||
import org.gcube.portlets.user.geoportaldataentry.client.events.CreateNewProjectEventHandler;
|
||||
import org.gcube.portlets.user.geoportaldataentry.client.events.GetListOfRecordsEvent;
|
||||
import org.gcube.portlets.user.geoportaldataentry.client.events.GetListOfRecordsEventHandler;
|
||||
import org.gcube.portlets.user.geoportaldataentry.client.events.SaveGeonaDataFormsEvent;
|
||||
import org.gcube.portlets.user.geoportaldataentry.client.events.SaveGeonaDataFormsHandler;
|
||||
import org.gcube.portlets.user.geoportaldataentry.client.ui.GeonaMainPanel;
|
||||
import org.gcube.portlets.user.geoportaldataentry.client.ui.GeonaMainTabPanel;
|
||||
import org.gcube.portlets.user.geoportaldataentry.client.ui.GeonaRecordsPaginatedView;
|
||||
import org.gcube.portlets.user.geoportaldataentry.client.ui.card.GeoNaFormCardModel;
|
||||
import org.gcube.portlets.user.geoportaldataentry.client.ui.form.GeonaDataEntryMainForm;
|
||||
import org.gcube.portlets.user.geoportaldataentry.client.ui.report.ReportTemplateToHTML;
|
||||
import org.gcube.portlets.user.geoportaldataentry.client.ui.table.ItemsTable.DISPLAY_FIELD;
|
||||
import org.gcube.portlets.user.geoportaldataentry.client.ui.utils.DialogConfirm;
|
||||
import org.gcube.portlets.user.geoportaldataentry.client.ui.utils.HTMLUtil;
|
||||
import org.gcube.portlets.user.geoportaldataentry.client.ui.utils.HTMLUtil.HTML_TAG;
|
||||
import org.gcube.portlets.user.geoportaldataentry.client.ui.utils.LoaderIcon;
|
||||
import org.gcube.portlets.user.geoportaldataentry.client.ui.utils.NewBrowserWindow;
|
||||
import org.gcube.portlets.user.geoportaldataentry.shared.CommitReport;
|
||||
import org.gcube.portlets.user.geoportaldataentry.shared.GeoNaFormDataObject;
|
||||
import org.gcube.portlets.user.geoportaldataentry.shared.GeonaISConfig;
|
||||
|
@ -36,6 +42,8 @@ import com.github.gwtbootstrap.client.ui.Modal;
|
|||
import com.github.gwtbootstrap.client.ui.constants.AlertType;
|
||||
import com.google.gwt.core.client.EntryPoint;
|
||||
import com.google.gwt.core.client.GWT;
|
||||
import com.google.gwt.event.dom.client.ClickEvent;
|
||||
import com.google.gwt.event.dom.client.ClickHandler;
|
||||
import com.google.gwt.event.shared.HandlerManager;
|
||||
import com.google.gwt.user.client.Window;
|
||||
import com.google.gwt.user.client.rpc.AsyncCallback;
|
||||
|
@ -48,7 +56,6 @@ import com.google.gwt.user.client.ui.VerticalPanel;
|
|||
* 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
|
||||
|
@ -67,27 +74,27 @@ public class GeoPortalDataEntryApp implements EntryPoint {
|
|||
private final HandlerManager appManagerBus = new HandlerManager(null);
|
||||
|
||||
private LinkedHashMap<String, GeoNaFormCardModel> mapForms = new LinkedHashMap<String, GeoNaFormCardModel>();
|
||||
|
||||
|
||||
private GeonaDataEntryMainForm geoNaMainForm;
|
||||
|
||||
|
||||
private Collection<GeoNaFormCardModel> orderedCards;
|
||||
|
||||
private GeonaMainPanel mainPanel;
|
||||
|
||||
|
||||
private GeonaMainTabPanel mainTabPanel;
|
||||
|
||||
private LinkedHashMap<String, List<GeoNaFormDataObject>> savedMap = new LinkedHashMap<String, List<GeoNaFormDataObject>>();
|
||||
|
||||
|
||||
private boolean projectSavedWithSuccess;
|
||||
|
||||
|
||||
/**
|
||||
* This is the entry point method.
|
||||
*/
|
||||
public void onModuleLoad() {
|
||||
|
||||
mainPanel = new GeonaMainPanel(appManagerBus);
|
||||
mainPanel.setLoaderVisible("Loading...", true);
|
||||
|
||||
|
||||
mainTabPanel = new GeonaMainTabPanel(appManagerBus);
|
||||
mainTabPanel.setLoaderVisible("Loading...", true);
|
||||
|
||||
geoNaMainForm = new GeonaDataEntryMainForm(appManagerBus);
|
||||
|
||||
|
||||
GeoportalDataEntryServiceAsync.Util.getInstance().getGeonaInitConfig(new AsyncCallback<GeonaISConfig>() {
|
||||
|
||||
@Override
|
||||
|
@ -97,131 +104,137 @@ public class GeoPortalDataEntryApp implements EntryPoint {
|
|||
|
||||
@Override
|
||||
public void onSuccess(GeonaISConfig result) {
|
||||
|
||||
if(result!=null && result.getgRSecondaryType()!=null && result.getScope()!=null) {
|
||||
callGetMetadataProfiles(result.getScope(), result.getgRSecondaryType());
|
||||
}else
|
||||
Window.alert(ConstantsGeoPortalDataEntryApp.ERROR_ON_INIZIALITAION_STAGE_PLEASE_CONTACT_THE_SUPPORT);
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
bindEvents();
|
||||
mainPanel.addFormPanel(geoNaMainForm);
|
||||
RootPanel.get(DIV_PORTLET_ID).add(mainPanel);
|
||||
}
|
||||
|
||||
|
||||
private void callGetMetadataProfiles(String scope, String secondaryType) {
|
||||
|
||||
MetadataProfileFormBuilderServiceAsync.Util.getInstance().getProfilesInTheScope(scope, secondaryType, new AsyncCallback<List<MetaDataProfileBean>>() {
|
||||
|
||||
@Override
|
||||
public void onSuccess(List<MetaDataProfileBean> result) {
|
||||
GWT.log("Returned "+result.size()+ "profile/s");
|
||||
orderedCards = setGeoNaFormsOrder(result);
|
||||
//ordered values
|
||||
buildNewCards(orderedCards);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFailure(Throwable caught) {
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private void buildNewCards(Collection<GeoNaFormCardModel> orderedCards) {
|
||||
projectSavedWithSuccess = false; //resetting state of saving
|
||||
mainPanel.setFormPanelVisible(true);
|
||||
mainPanel.setLoaderVisible("Loading...", true);
|
||||
resetUI();
|
||||
//ordered values
|
||||
for (GeoNaFormCardModel geonaForm : orderedCards) {
|
||||
|
||||
//TODO TO TEST
|
||||
//if(geonaForm.getFormCardTitle().equals(ConcessioniFormCardTitle.IMMAGINI_RAPPRESENTATIVE)){
|
||||
|
||||
GWT.log("Adding card: "+geonaForm.getFormCardTitle());
|
||||
CreateMetadataForm baseForm = new CreateMetadataForm(Arrays.asList(geonaForm.getMetadataProfileBean()),appManagerBus);
|
||||
geonaForm.setMetadataForm(baseForm);
|
||||
String key = geonaForm.getMetadataProfileBean().getType();
|
||||
if(geonaForm.getFormCardTitle()!=null) {
|
||||
key = geonaForm.getFormCardTitle().getTitle();
|
||||
}
|
||||
geoNaMainForm.addForm(key, geonaForm);
|
||||
mapForms.put(key, geonaForm);
|
||||
|
||||
//}
|
||||
if (result != null && result.getgRSecondaryType() != null && result.getScope() != null) {
|
||||
callGetMetadataProfiles(result.getScope(), result.getgRSecondaryType());
|
||||
} else
|
||||
Window.alert(
|
||||
ConstantsGeoPortalDataEntryApp.ERROR_ON_INIZIALITAION_STAGE_PLEASE_CONTACT_THE_SUPPORT);
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
bindEvents();
|
||||
mainTabPanel.addFormPanel(geoNaMainForm);
|
||||
RootPanel.get(DIV_PORTLET_ID).add(mainTabPanel);
|
||||
}
|
||||
|
||||
private void callGetMetadataProfiles(String scope, String secondaryType) {
|
||||
|
||||
MetadataProfileFormBuilderServiceAsync.Util.getInstance().getProfilesInTheScope(scope, secondaryType,
|
||||
new AsyncCallback<List<MetaDataProfileBean>>() {
|
||||
|
||||
@Override
|
||||
public void onSuccess(List<MetaDataProfileBean> result) {
|
||||
GWT.log("Returned " + result.size() + "profile/s");
|
||||
orderedCards = setGeoNaFormsOrder(result);
|
||||
// ordered values
|
||||
buildNewCards(orderedCards);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFailure(Throwable caught) {
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private void buildNewCards(Collection<GeoNaFormCardModel> orderedCards) {
|
||||
projectSavedWithSuccess = false; // resetting state of saving
|
||||
mainTabPanel.setLoaderVisible("Loading...", true);
|
||||
resetUI();
|
||||
// ordered values
|
||||
for (GeoNaFormCardModel geonaForm : orderedCards) {
|
||||
|
||||
// TODO TO TEST
|
||||
// if(geonaForm.getFormCardTitle().equals(ConcessioniFormCardTitle.IMMAGINI_RAPPRESENTATIVE)){
|
||||
|
||||
GWT.log("Adding card: " + geonaForm.getFormCardTitle());
|
||||
CreateMetadataForm baseForm = new CreateMetadataForm(Arrays.asList(geonaForm.getMetadataProfileBean()),
|
||||
appManagerBus);
|
||||
geonaForm.setMetadataForm(baseForm);
|
||||
String key = geonaForm.getMetadataProfileBean().getType();
|
||||
if (geonaForm.getFormCardTitle() != null) {
|
||||
key = geonaForm.getFormCardTitle().getTitle();
|
||||
}
|
||||
geoNaMainForm.addForm(key, geonaForm);
|
||||
mapForms.put(key, geonaForm);
|
||||
|
||||
// }
|
||||
}
|
||||
geoNaMainForm.enableButtonSave(true);
|
||||
mainPanel.setLoaderVisible("", false);
|
||||
mainTabPanel.setLoaderVisible("", false);
|
||||
}
|
||||
|
||||
|
||||
private void resetUI() {
|
||||
geoNaMainForm.reset();
|
||||
mapForms.clear();
|
||||
}
|
||||
|
||||
|
||||
private Collection<GeoNaFormCardModel> setGeoNaFormsOrder(List<MetaDataProfileBean> listMetadataProfilesForGeona) {
|
||||
|
||||
|
||||
TreeMap<Integer, GeoNaFormCardModel> treemapOrderedGeoNaProfiles = new TreeMap<Integer, GeoNaFormCardModel>();
|
||||
|
||||
|
||||
List<GeoNaFormCardModel> listUnknownType = new ArrayList<GeoNaFormCardModel>();
|
||||
|
||||
for (MetaDataProfileBean metaDataProfileBean : listMetadataProfilesForGeona) {
|
||||
|
||||
|
||||
String theMetaType = metaDataProfileBean.getType().toLowerCase();
|
||||
GWT.log("Building form card for type: "+theMetaType);
|
||||
GWT.log("Building form card for type: " + theMetaType);
|
||||
GeoNaFormCardModel geonaForm = new GeoNaFormCardModel(metaDataProfileBean, null, null);
|
||||
|
||||
if(theMetaType.contains(ConcessioniFormCardTitle.INFORMAZIONI_DI_PROGETTO.getKey().toLowerCase())) {
|
||||
|
||||
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.ABSTRACT_RELAZIONE_DI_SCAVO.getKey().toLowerCase())) {
|
||||
treemapOrderedGeoNaProfiles.put(ConcessioniFormCardTitle.INFORMAZIONI_DI_PROGETTO.getOrder(),
|
||||
geonaForm);
|
||||
} else if (theMetaType
|
||||
.contains(ConcessioniFormCardTitle.ABSTRACT_RELAZIONE_DI_SCAVO.getKey().toLowerCase())) {
|
||||
geonaForm.setFormCardTitle(ConcessioniFormCardTitle.ABSTRACT_RELAZIONE_DI_SCAVO);
|
||||
treemapOrderedGeoNaProfiles.put(ConcessioniFormCardTitle.ABSTRACT_RELAZIONE_DI_SCAVO.getOrder(), geonaForm);
|
||||
}else if(theMetaType.contains(ConcessioniFormCardTitle.RELAZIONE_DI_SCAVO.getKey().toLowerCase())) {
|
||||
treemapOrderedGeoNaProfiles.put(ConcessioniFormCardTitle.ABSTRACT_RELAZIONE_DI_SCAVO.getOrder(),
|
||||
geonaForm);
|
||||
} else if (theMetaType.contains(ConcessioniFormCardTitle.RELAZIONE_DI_SCAVO.getKey().toLowerCase())) {
|
||||
geonaForm.setFormCardTitle(ConcessioniFormCardTitle.RELAZIONE_DI_SCAVO);
|
||||
treemapOrderedGeoNaProfiles.put(ConcessioniFormCardTitle.RELAZIONE_DI_SCAVO.getOrder(), geonaForm);
|
||||
}else if(theMetaType.contains(ConcessioniFormCardTitle.IMMAGINI_RAPPRESENTATIVE.getKey().toLowerCase())) {
|
||||
} 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())) {
|
||||
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())) {
|
||||
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
|
||||
} else {
|
||||
// adding to unknown list
|
||||
listUnknownType.add(geonaForm);
|
||||
}
|
||||
}
|
||||
|
||||
//adding unknown types
|
||||
|
||||
// adding unknown types
|
||||
for (GeoNaFormCardModel geoNaFormCardModel : listUnknownType) {
|
||||
Integer highestKey = treemapOrderedGeoNaProfiles.lastKey();
|
||||
highestKey++;
|
||||
treemapOrderedGeoNaProfiles.put(highestKey, geoNaFormCardModel);
|
||||
}
|
||||
|
||||
GWT.log("Map size: "+treemapOrderedGeoNaProfiles.size());
|
||||
|
||||
GWT.log("Map size: " + treemapOrderedGeoNaProfiles.size());
|
||||
return treemapOrderedGeoNaProfiles.values();
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
private void bindEvents() {
|
||||
|
||||
|
||||
appManagerBus.addHandler(SaveGeonaDataFormsEvent.TYPE, new SaveGeonaDataFormsHandler() {
|
||||
|
||||
|
||||
@Override
|
||||
public void onSave(final SaveGeonaDataFormsEvent saveGeonaDataFormsEvent) {
|
||||
|
||||
|
||||
geoNaMainForm.enableButtonSave(false);
|
||||
|
||||
if(saveGeonaDataFormsEvent.getListGeonaDataForms()!=null) {
|
||||
|
||||
|
||||
if (saveGeonaDataFormsEvent.getListGeonaDataForms() != null) {
|
||||
|
||||
final Modal modal = new Modal(true);
|
||||
modal.setCloseVisible(false);
|
||||
modal.setTitle("Saving project...");
|
||||
|
@ -234,110 +247,120 @@ public class GeoPortalDataEntryApp implements EntryPoint {
|
|||
modalContainerPanel.add(loader);
|
||||
modal.add(modalContainerPanel);
|
||||
|
||||
GeoportalDataEntryServiceAsync.Util.getInstance().saveGeonaDataForms(saveGeonaDataFormsEvent.getListGeonaDataForms(), new AsyncCallback<CommitReport>() {
|
||||
GeoportalDataEntryServiceAsync.Util.getInstance().saveGeonaDataForms(
|
||||
saveGeonaDataFormsEvent.getListGeonaDataForms(), new AsyncCallback<CommitReport>() {
|
||||
|
||||
@Override
|
||||
public void onFailure(Throwable caught) {
|
||||
modalContainerPanel.clear();
|
||||
modal.setCloseVisible(true);
|
||||
try {
|
||||
modal.remove(loader);
|
||||
}catch (Exception e) {
|
||||
}
|
||||
Alert alert = new Alert(caught.getMessage());
|
||||
alert.setType(AlertType.ERROR);
|
||||
alert.setClose(false);
|
||||
modal.add(alert);
|
||||
//resetUI();
|
||||
geoNaMainForm.enableButtonSave(true);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSuccess(CommitReport result) {
|
||||
modalContainerPanel.clear();
|
||||
modal.setCloseVisible(true);
|
||||
HTML recordPublished = new HTML();
|
||||
switch (result.getState()) {
|
||||
case OK:
|
||||
String success = HTMLUtil.getHTMLElement(HTML_TAG.span, 14, "32CD32", null, "SUCCESS");
|
||||
recordPublished.setHTML("Record Published with "+success);
|
||||
projectSavedWithSuccess = true;
|
||||
String msg = result.getMsg()!=null?result.getMsg():"Record published with success";
|
||||
geoNaMainForm.showAlertOnSaveAction(msg, AlertType.SUCCESS, true);
|
||||
purgeFileUploaded();
|
||||
break;
|
||||
case WARN:
|
||||
String warning = HTMLUtil.getHTMLElement(HTML_TAG.span, 14, "FF8000", null, "WARNING");
|
||||
recordPublished.setHTML("Record Published with "+warning);
|
||||
geoNaMainForm.enableButtonSave(true);
|
||||
break;
|
||||
case ERROR:
|
||||
String error = HTMLUtil.getHTMLElement(HTML_TAG.span, 14, "FF0000", "bold", "ERROR");
|
||||
recordPublished.setHTML(error+" on publishing the Record");
|
||||
geoNaMainForm.enableButtonSave(true);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
modalContainerPanel.add(recordPublished);
|
||||
|
||||
if(result.getMongoId()!=null) {
|
||||
modalContainerPanel.add(new HTML("Record id: "+(result.getMongoId())));
|
||||
|
||||
try {
|
||||
savedMap.put(result.getMongoId(), saveGeonaDataFormsEvent.getListGeonaDataForms());
|
||||
}catch (Exception e) {
|
||||
// TODO: handle exception
|
||||
@Override
|
||||
public void onFailure(Throwable caught) {
|
||||
modalContainerPanel.clear();
|
||||
modal.setCloseVisible(true);
|
||||
try {
|
||||
modal.remove(loader);
|
||||
} catch (Exception e) {
|
||||
}
|
||||
Alert alert = new Alert(caught.getMessage());
|
||||
alert.setType(AlertType.ERROR);
|
||||
alert.setClose(false);
|
||||
modal.add(alert);
|
||||
// resetUI();
|
||||
geoNaMainForm.enableButtonSave(true);
|
||||
}
|
||||
|
||||
final HorizontalPanel hpGetLink = new HorizontalPanel();
|
||||
final LoaderIcon lc = new LoaderIcon("Get link...");
|
||||
hpGetLink.add(lc);
|
||||
modalContainerPanel.add(hpGetLink);
|
||||
GeoportalDataEntryServiceAsync.Util.getInstance().getLinksFor(result.getMongoId(), "concessione", new AsyncCallback<GeoNaItemRef>() {
|
||||
|
||||
@Override
|
||||
public void onFailure(Throwable caught) {
|
||||
hpGetLink.clear();
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSuccess(GeoNaItemRef result) {
|
||||
hpGetLink.clear();
|
||||
String theURL = result.getRestrictedLink().getShortURL()!=null?result.getRestrictedLink().getShortURL():result.getRestrictedLink().getCompleteURL();
|
||||
String htmlLink = "<div>Go to record: <a href="+theURL+" target=\"_blank\">"+theURL+"</a></div>";
|
||||
HTML html = new HTML(htmlLink);
|
||||
hpGetLink.add(html);
|
||||
//modal.add(html);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
//geoNaMainForm.enableButtonSave(true);
|
||||
//resetUI();
|
||||
|
||||
if(result.getReport()!=null) {
|
||||
modalContainerPanel.add(new ReportTemplateToHTML(result.getReport()));
|
||||
}
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
@Override
|
||||
public void onSuccess(CommitReport result) {
|
||||
modalContainerPanel.clear();
|
||||
modal.setCloseVisible(true);
|
||||
HTML recordPublished = new HTML();
|
||||
switch (result.getState()) {
|
||||
case OK:
|
||||
String success = HTMLUtil.getHTMLElement(HTML_TAG.span, 14, "32CD32", null,
|
||||
"SUCCESS");
|
||||
recordPublished.setHTML("Record Published with " + success);
|
||||
projectSavedWithSuccess = true;
|
||||
String msg = result.getMsg() != null ? result.getMsg()
|
||||
: "Record published with success";
|
||||
geoNaMainForm.showAlertOnSaveAction(msg, AlertType.SUCCESS, true);
|
||||
purgeFileUploaded();
|
||||
break;
|
||||
case WARN:
|
||||
String warning = HTMLUtil.getHTMLElement(HTML_TAG.span, 14, "FF8000", null,
|
||||
"WARNING");
|
||||
recordPublished.setHTML("Record Published with " + warning);
|
||||
geoNaMainForm.enableButtonSave(true);
|
||||
break;
|
||||
case ERROR:
|
||||
String error = HTMLUtil.getHTMLElement(HTML_TAG.span, 14, "FF0000", "bold",
|
||||
"ERROR");
|
||||
recordPublished.setHTML(error + " on publishing the Record");
|
||||
geoNaMainForm.enableButtonSave(true);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
modalContainerPanel.add(recordPublished);
|
||||
|
||||
if (result.getMongoId() != null) {
|
||||
modalContainerPanel.add(new HTML("Record id: " + (result.getMongoId())));
|
||||
|
||||
try {
|
||||
savedMap.put(result.getMongoId(),
|
||||
saveGeonaDataFormsEvent.getListGeonaDataForms());
|
||||
} catch (Exception e) {
|
||||
// TODO: handle exception
|
||||
}
|
||||
|
||||
final HorizontalPanel hpGetLink = new HorizontalPanel();
|
||||
final LoaderIcon lc = new LoaderIcon("Get link...");
|
||||
hpGetLink.add(lc);
|
||||
modalContainerPanel.add(hpGetLink);
|
||||
GeoportalDataEntryServiceAsync.Util.getInstance().getLinksFor(
|
||||
result.getMongoId(), RECORD_TYPE.CONCESSIONE,
|
||||
new AsyncCallback<GeoNaItemRef>() {
|
||||
|
||||
@Override
|
||||
public void onFailure(Throwable caught) {
|
||||
hpGetLink.clear();
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSuccess(GeoNaItemRef result) {
|
||||
hpGetLink.clear();
|
||||
String theURL = result.getRestrictedLink().getShortURL() != null
|
||||
? result.getRestrictedLink().getShortURL()
|
||||
: result.getRestrictedLink().getCompleteURL();
|
||||
String htmlLink = "<div>Go to record: <a href=" + theURL
|
||||
+ " target=\"_blank\">" + theURL + "</a></div>";
|
||||
HTML html = new HTML(htmlLink);
|
||||
hpGetLink.add(html);
|
||||
// modal.add(html);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
// geoNaMainForm.enableButtonSave(true);
|
||||
// resetUI();
|
||||
|
||||
if (result.getReport() != null) {
|
||||
modalContainerPanel.add(new ReportTemplateToHTML(result.getReport()));
|
||||
}
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
modal.show();
|
||||
}else
|
||||
} else
|
||||
geoNaMainForm.enableButtonSave(true);
|
||||
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
appManagerBus.addHandler(CreateNewProjectEvent.TYPE, new CreateNewProjectEventHandler() {
|
||||
|
||||
|
||||
@Override
|
||||
public void onCreateNewProject(CreateNewProjectEvent newProjectEvent) {
|
||||
|
||||
|
||||
// means the form was not submitted
|
||||
if (savedMap.size() == 0) {
|
||||
boolean confirm = Window.confirm(
|
||||
|
@ -345,10 +368,10 @@ public class GeoPortalDataEntryApp implements EntryPoint {
|
|||
if (confirm)
|
||||
buildNewCards(orderedCards);
|
||||
} else if (projectSavedWithSuccess) {
|
||||
//means the project has been saved
|
||||
// means the project has been saved
|
||||
buildNewCards(orderedCards);
|
||||
} else {
|
||||
//means the project reported one ore more errors after the submit
|
||||
// means the project reported one ore more errors after the submit
|
||||
boolean confirm = Window.confirm("Creating a new project, the web-forms will be cleaned, Confirm?");
|
||||
if (confirm)
|
||||
buildNewCards(orderedCards);
|
||||
|
@ -356,37 +379,159 @@ public class GeoPortalDataEntryApp implements EntryPoint {
|
|||
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
appManagerBus.addHandler(GetListOfRecordsEvent.TYPE, new GetListOfRecordsEventHandler() {
|
||||
|
||||
|
||||
@Override
|
||||
public void onGetList(GetListOfRecordsEvent getListOfRecordsEvent) {
|
||||
|
||||
GeonaRecordsPaginatedView grpw = new GeonaRecordsPaginatedView(appManagerBus,RECORD_TYPE.CONCESSIONE,null, DISPLAY_FIELD.NAME);
|
||||
mainPanel.showListOfConcessioniView(grpw);
|
||||
|
||||
GeonaRecordsPaginatedView grpw = new GeonaRecordsPaginatedView(appManagerBus, RECORD_TYPE.CONCESSIONE,
|
||||
null, DISPLAY_FIELD.NAME);
|
||||
mainTabPanel.showListOfConcessioniView(grpw);
|
||||
}
|
||||
});
|
||||
|
||||
appManagerBus.addHandler(ActionOnItemEvent.TYPE, new ActionOnItemEventHandler() {
|
||||
|
||||
@Override
|
||||
public <T> void onDoActionFired(ActionOnItemEvent<T> showItemEvent) {
|
||||
|
||||
if (showItemEvent != null) {
|
||||
|
||||
ACTION_ON_ITEM action = showItemEvent.getAction();
|
||||
List<T> items = showItemEvent.getSelectItems();
|
||||
|
||||
if (items == null)
|
||||
return;
|
||||
|
||||
T item = items.get(0);
|
||||
|
||||
if (item == null)
|
||||
return;
|
||||
|
||||
if (item instanceof ConcessioneDV) {
|
||||
|
||||
final ConcessioneDV concessione = (ConcessioneDV) item;
|
||||
GWT.log("ActionOnItemEvente item: " + concessione);
|
||||
|
||||
switch (action) {
|
||||
case SHOW_ON_MAP:
|
||||
final Modal modal = new Modal(true, true);
|
||||
modal.setCloseVisible(true);
|
||||
final HorizontalPanel hpGetLink = new HorizontalPanel();
|
||||
final LoaderIcon lc = new LoaderIcon("Get link...");
|
||||
hpGetLink.add(lc);
|
||||
modal.add(hpGetLink);
|
||||
final NewBrowserWindow newBrowserWindow = NewBrowserWindow.open("", "_blank", "");
|
||||
|
||||
GeoportalDataEntryServiceAsync.Util.getInstance().getLinksFor(concessione.getItemId(),
|
||||
RECORD_TYPE.CONCESSIONE, new AsyncCallback<GeoNaItemRef>() {
|
||||
@Override
|
||||
public void onFailure(Throwable caught) {
|
||||
hpGetLink.clear();
|
||||
Alert alert = new Alert(caught.getMessage(), AlertType.ERROR);
|
||||
alert.setClose(false);
|
||||
hpGetLink.add(alert);
|
||||
newBrowserWindow.close();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSuccess(GeoNaItemRef result) {
|
||||
String theURL = result.getRestrictedLink().getShortURL() != null
|
||||
? result.getRestrictedLink().getShortURL()
|
||||
: result.getRestrictedLink().getCompleteURL();
|
||||
newBrowserWindow.setUrl(theURL);
|
||||
modal.hide();
|
||||
}
|
||||
});
|
||||
|
||||
modal.show();
|
||||
|
||||
break;
|
||||
case REMOVE:
|
||||
|
||||
String htmlMsg = "Going to delete the project with:";
|
||||
htmlMsg += "<ul>";
|
||||
htmlMsg += "<li>id: " + concessione.getItemId() + "</li>";
|
||||
htmlMsg += "<li>name: " + concessione.getNome() + "</li>";
|
||||
htmlMsg += "</ul>";
|
||||
htmlMsg += "<br>";
|
||||
htmlMsg += "This operation cannot be undone. Would you like to proceed?";
|
||||
|
||||
final DialogConfirm dialog = new DialogConfirm(null, "Delete Confirm?", htmlMsg);
|
||||
dialog.center();
|
||||
|
||||
dialog.getYesButton().addClickHandler(new ClickHandler() {
|
||||
|
||||
@Override
|
||||
public void onClick(ClickEvent event) {
|
||||
dialog.hide();
|
||||
final Modal modal = new Modal(true, true);
|
||||
modal.setCloseVisible(true);
|
||||
final HorizontalPanel hp = new HorizontalPanel();
|
||||
final LoaderIcon lc = new LoaderIcon("Deleting Project...");
|
||||
hp.add(lc);
|
||||
modal.add(hp);
|
||||
|
||||
GeoportalDataEntryServiceAsync.Util.getInstance().deleteRecord(
|
||||
concessione.getItemId(), RECORD_TYPE.CONCESSIONE,
|
||||
new AsyncCallback<Boolean>() {
|
||||
|
||||
@Override
|
||||
public void onFailure(Throwable caught) {
|
||||
hp.clear();
|
||||
Alert alert = new Alert(caught.getMessage(), AlertType.ERROR);
|
||||
alert.setClose(false);
|
||||
hp.add(alert);
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSuccess(Boolean result) {
|
||||
if (result) {
|
||||
hp.clear();
|
||||
Alert alert = new Alert("Project '" + concessione.getNome()
|
||||
+ "' deleted correclty", AlertType.INFO);
|
||||
alert.setClose(false);
|
||||
hp.add(alert);
|
||||
|
||||
appManagerBus.fireEvent(
|
||||
new GetListOfRecordsEvent(RECORD_TYPE.CONCESSIONE));
|
||||
}
|
||||
|
||||
}
|
||||
});
|
||||
modal.show();
|
||||
}
|
||||
});
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
private void purgeFileUploaded() {
|
||||
|
||||
|
||||
MetadataProfileFormBuilderServiceAsync.Util.getInstance().purgeFilesUploaded(new AsyncCallback<Integer>() {
|
||||
|
||||
@Override
|
||||
public void onFailure(Throwable caught) {
|
||||
//silent
|
||||
|
||||
// silent
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSuccess(Integer result) {
|
||||
GWT.log("Purged "+result+" file/s uploaded");
|
||||
|
||||
GWT.log("Purged " + result + " file/s uploaded");
|
||||
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -3,6 +3,7 @@ package org.gcube.portlets.user.geoportaldataentry.client;
|
|||
import java.util.List;
|
||||
|
||||
import org.gcube.application.geoportalcommon.shared.GeoNaItemRef;
|
||||
import org.gcube.portlets.user.geoportaldataentry.client.ConstantsGeoPortalDataEntryApp.RECORD_TYPE;
|
||||
import org.gcube.portlets.user.geoportaldataentry.shared.CommitReport;
|
||||
import org.gcube.portlets.user.geoportaldataentry.shared.GeoNaFormDataObject;
|
||||
import org.gcube.portlets.user.geoportaldataentry.shared.GeonaISConfig;
|
||||
|
@ -16,7 +17,7 @@ import com.google.gwt.user.client.rpc.RemoteServiceRelativePath;
|
|||
*
|
||||
* @author Francesco Mangiacrapa at ISTI-CNR francesco.mangiacrapa@isti.cnr.it
|
||||
*
|
||||
* Aug 4, 2021
|
||||
* Aug 4, 2021
|
||||
*/
|
||||
@RemoteServiceRelativePath("geoportaldataentryservice")
|
||||
public interface GeoportalDataEntryService extends RemoteService {
|
||||
|
@ -40,21 +41,30 @@ public interface GeoportalDataEntryService extends RemoteService {
|
|||
/**
|
||||
* Gets the links for.
|
||||
*
|
||||
* @param itemId the item id
|
||||
* @param itemId the item id
|
||||
* @param recordType the record type
|
||||
* @return the links for
|
||||
* @throws Exception the exception
|
||||
*/
|
||||
GeoNaItemRef getLinksFor(String itemId, String recordType) throws Exception;
|
||||
|
||||
GeoNaItemRef getLinksFor(String itemId, RECORD_TYPE recordType) throws Exception;
|
||||
|
||||
/**
|
||||
* Gets the list concessioni.
|
||||
*
|
||||
* @param start the start
|
||||
* @param start the start
|
||||
* @param offset the offset
|
||||
* @param reloadFromService the reload from service
|
||||
* @return the list concessioni
|
||||
* @throws Exception the exception
|
||||
*/
|
||||
SearchedData getListConcessioni(Integer start, Integer offset) throws Exception;
|
||||
SearchedData getListConcessioni(Integer start, Integer offset, boolean reloadFromService) throws Exception;
|
||||
|
||||
/**
|
||||
* Delete record.
|
||||
*
|
||||
* @param itemId the item id
|
||||
* @param recordType the record type
|
||||
* @return true, if successful
|
||||
*/
|
||||
boolean deleteRecord(String itemId, RECORD_TYPE recordType) throws Exception;
|
||||
}
|
||||
|
|
|
@ -3,6 +3,7 @@ package org.gcube.portlets.user.geoportaldataentry.client;
|
|||
import java.util.List;
|
||||
|
||||
import org.gcube.application.geoportalcommon.shared.GeoNaItemRef;
|
||||
import org.gcube.portlets.user.geoportaldataentry.client.ConstantsGeoPortalDataEntryApp.RECORD_TYPE;
|
||||
import org.gcube.portlets.user.geoportaldataentry.shared.CommitReport;
|
||||
import org.gcube.portlets.user.geoportaldataentry.shared.GeoNaFormDataObject;
|
||||
import org.gcube.portlets.user.geoportaldataentry.shared.GeonaISConfig;
|
||||
|
@ -43,8 +44,11 @@ public interface GeoportalDataEntryServiceAsync
|
|||
void getGeonaInitConfig(AsyncCallback<GeonaISConfig> callback);
|
||||
|
||||
|
||||
void getLinksFor(String itemId, String recordType, AsyncCallback<GeoNaItemRef> callback);
|
||||
void getLinksFor(String itemId, RECORD_TYPE recordType, AsyncCallback<GeoNaItemRef> callback);
|
||||
|
||||
|
||||
void getListConcessioni(Integer start, Integer offset, AsyncCallback<SearchedData> callback);
|
||||
void getListConcessioni(Integer start, Integer offset, boolean reloadFromService, AsyncCallback<SearchedData> callback);
|
||||
|
||||
|
||||
void deleteRecord(String itemId, RECORD_TYPE recordType, AsyncCallback<Boolean> callback);
|
||||
}
|
||||
|
|
|
@ -1,101 +0,0 @@
|
|||
package org.gcube.portlets.user.geoportaldataentry.client.ui;
|
||||
|
||||
import org.gcube.portlets.user.geoportaldataentry.client.ui.form.GeonaDataEntryMainForm;
|
||||
import org.gcube.portlets.user.geoportaldataentry.client.ui.utils.LoaderIcon;
|
||||
|
||||
import com.google.gwt.core.client.GWT;
|
||||
import com.google.gwt.event.shared.HandlerManager;
|
||||
import com.google.gwt.uibinder.client.UiBinder;
|
||||
import com.google.gwt.uibinder.client.UiField;
|
||||
import com.google.gwt.user.client.ui.Composite;
|
||||
import com.google.gwt.user.client.ui.HTMLPanel;
|
||||
import com.google.gwt.user.client.ui.VerticalPanel;
|
||||
import com.google.gwt.user.client.ui.Widget;
|
||||
|
||||
/**
|
||||
* The Class GeonaMainPanel.
|
||||
*
|
||||
* @author Francesco Mangiacrapa at ISTI-CNR (francesco.mangiacrapa@isti.cnr.it)
|
||||
*
|
||||
* Oct 13, 2020
|
||||
*/
|
||||
public class GeonaMainPanel extends Composite {
|
||||
|
||||
/** The geona main form panel. */
|
||||
@UiField
|
||||
HTMLPanel geonaMainFormPanel;
|
||||
|
||||
@UiField
|
||||
HTMLPanel geonaListOfConcessioniPanel;
|
||||
|
||||
/** The loader. */
|
||||
@UiField
|
||||
LoaderIcon loader;
|
||||
|
||||
@UiField
|
||||
GeonaNavigationBar geonaNavigationBar;
|
||||
|
||||
private HandlerManager appManagerBus;
|
||||
|
||||
/** The ui binder. */
|
||||
private static GeonaMainPanelUiBinder uiBinder = GWT.create(GeonaMainPanelUiBinder.class);
|
||||
|
||||
/**
|
||||
* The Interface GeonaMainPanelUiBinder.
|
||||
*
|
||||
* @author Francesco Mangiacrapa at ISTI-CNR (francesco.mangiacrapa@isti.cnr.it)
|
||||
*
|
||||
* Oct 13, 2020
|
||||
*/
|
||||
interface GeonaMainPanelUiBinder extends UiBinder<Widget, GeonaMainPanel> {
|
||||
}
|
||||
|
||||
/**
|
||||
* Instantiates a new geona main panel.
|
||||
*
|
||||
* @param appManagerBus
|
||||
*/
|
||||
public GeonaMainPanel(HandlerManager appManagerBus) {
|
||||
initWidget(uiBinder.createAndBindUi(this));
|
||||
this.appManagerBus = appManagerBus;
|
||||
geonaNavigationBar.setAppManagerBus(appManagerBus);
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds the form panel.
|
||||
*
|
||||
* @param formPanel the form panel
|
||||
*/
|
||||
public void addFormPanel(GeonaDataEntryMainForm formPanel) {
|
||||
geonaListOfConcessioniPanel.setVisible(false);
|
||||
geonaMainFormPanel.add(formPanel);
|
||||
geonaMainFormPanel.setVisible(true);
|
||||
}
|
||||
|
||||
public void showListOfConcessioniView(GeonaRecordsPaginatedView grpw) {
|
||||
setFormPanelVisible(false);
|
||||
geonaListOfConcessioniPanel.clear();
|
||||
VerticalPanel htmllPanel = new VerticalPanel();
|
||||
htmllPanel.add(grpw.getCellPanel());
|
||||
htmllPanel.add(grpw.getPagerPanel());
|
||||
geonaListOfConcessioniPanel.add(htmllPanel);
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the loader visible.
|
||||
*
|
||||
* @param txtHTML the txt HTML
|
||||
* @param visible the visible
|
||||
*/
|
||||
public void setLoaderVisible(String txtHTML, boolean visible) {
|
||||
loader.setText(txtHTML);
|
||||
loader.setVisible(visible);
|
||||
}
|
||||
|
||||
public void setFormPanelVisible(boolean bool) {
|
||||
geonaMainFormPanel.setVisible(bool);
|
||||
geonaListOfConcessioniPanel.setVisible(!bool);
|
||||
|
||||
}
|
||||
|
||||
}
|
|
@ -1,28 +0,0 @@
|
|||
<!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent">
|
||||
<ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder"
|
||||
xmlns:g="urn:import:com.google.gwt.user.client.ui"
|
||||
xmlns:b="urn:import:com.github.gwtbootstrap.client.ui"
|
||||
xmlns:m="urn:import:org.gcube.portlets.user.geoportaldataentry.client.ui"
|
||||
xmlns:r="urn:import:org.gcube.portlets.user.geoportaldataentry.client.ui.utils">
|
||||
|
||||
<ui:style>
|
||||
.important {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.custom-page-header {
|
||||
padding: 10px;
|
||||
background-color: #f5f5f5;
|
||||
margin-bottom: 10px;
|
||||
border: 1px solid #eee;
|
||||
}
|
||||
</ui:style>
|
||||
<g:HTMLPanel ui:field="geonaMainPanel">
|
||||
<b:PageHeader subtext="data entry facility"
|
||||
styleName="{style.custom-page-header}">GeoNa</b:PageHeader>
|
||||
<m:GeonaNavigationBar ui:field="geonaNavigationBar"></m:GeonaNavigationBar>
|
||||
<r:LoaderIcon ui:field="loader"></r:LoaderIcon>
|
||||
<g:HTMLPanel ui:field="geonaMainFormPanel"></g:HTMLPanel>
|
||||
<g:HTMLPanel ui:field="geonaListOfConcessioniPanel" visible="false"></g:HTMLPanel>
|
||||
</g:HTMLPanel>
|
||||
</ui:UiBinder>
|
|
@ -0,0 +1,142 @@
|
|||
package org.gcube.portlets.user.geoportaldataentry.client.ui;
|
||||
|
||||
import org.gcube.portlets.user.geoportaldataentry.client.ConstantsGeoPortalDataEntryApp.RECORD_TYPE;
|
||||
import org.gcube.portlets.user.geoportaldataentry.client.events.CreateNewProjectEvent;
|
||||
import org.gcube.portlets.user.geoportaldataentry.client.events.GetListOfRecordsEvent;
|
||||
import org.gcube.portlets.user.geoportaldataentry.client.ui.form.GeonaDataEntryMainForm;
|
||||
import org.gcube.portlets.user.geoportaldataentry.client.ui.table.ItemsTable.DISPLAY_FIELD;
|
||||
import org.gcube.portlets.user.geoportaldataentry.client.ui.utils.LoaderIcon;
|
||||
|
||||
import com.github.gwtbootstrap.client.ui.NavLink;
|
||||
import com.github.gwtbootstrap.client.ui.Tab;
|
||||
import com.google.gwt.core.client.GWT;
|
||||
import com.google.gwt.event.dom.client.ClickEvent;
|
||||
import com.google.gwt.event.dom.client.ClickHandler;
|
||||
import com.google.gwt.event.shared.HandlerManager;
|
||||
import com.google.gwt.uibinder.client.UiBinder;
|
||||
import com.google.gwt.uibinder.client.UiField;
|
||||
import com.google.gwt.user.client.ui.Composite;
|
||||
import com.google.gwt.user.client.ui.HTMLPanel;
|
||||
import com.google.gwt.user.client.ui.VerticalPanel;
|
||||
import com.google.gwt.user.client.ui.Widget;
|
||||
|
||||
/**
|
||||
* The Class GeonaMainTabPanel.
|
||||
*
|
||||
* @author Francesco Mangiacrapa at ISTI-CNR francesco.mangiacrapa@isti.cnr.it
|
||||
*
|
||||
* Aug 5, 2021
|
||||
*/
|
||||
public class GeonaMainTabPanel extends Composite {
|
||||
|
||||
private static GeonaMainTabPanelUiBinder uiBinder = GWT.create(GeonaMainTabPanelUiBinder.class);
|
||||
|
||||
/**
|
||||
* The Interface GeonaMainTabPanelUiBinder.
|
||||
*
|
||||
* @author Francesco Mangiacrapa at ISTI-CNR francesco.mangiacrapa@isti.cnr.it
|
||||
*
|
||||
* Aug 5, 2021
|
||||
*/
|
||||
interface GeonaMainTabPanelUiBinder extends UiBinder<Widget, GeonaMainTabPanel> {
|
||||
}
|
||||
|
||||
/** The geona main form panel. */
|
||||
@UiField
|
||||
HTMLPanel geonaMainFormPanel;
|
||||
|
||||
@UiField
|
||||
HTMLPanel geonaListOfConcessioniPanel;
|
||||
|
||||
/** The loader. */
|
||||
@UiField
|
||||
LoaderIcon loader;
|
||||
|
||||
@UiField
|
||||
NavLink buttCreateNewProject;
|
||||
|
||||
@UiField
|
||||
NavLink buttonReloadConcessioni;
|
||||
|
||||
@UiField
|
||||
Tab tabNewProject;
|
||||
|
||||
@UiField
|
||||
Tab tabGetListOfProjects;
|
||||
|
||||
private HandlerManager appManagerBus;
|
||||
|
||||
/**
|
||||
* Instantiates a new geona main tab panel.
|
||||
*
|
||||
* @param appManagerBus the first name
|
||||
*/
|
||||
public GeonaMainTabPanel(HandlerManager appManagerBus) {
|
||||
initWidget(uiBinder.createAndBindUi(this));
|
||||
this.appManagerBus = appManagerBus;
|
||||
bindEvents();
|
||||
|
||||
}
|
||||
|
||||
private void bindEvents() {
|
||||
|
||||
buttCreateNewProject.addClickHandler(new ClickHandler() {
|
||||
|
||||
@Override
|
||||
public void onClick(ClickEvent event) {
|
||||
appManagerBus.fireEvent(new CreateNewProjectEvent());
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
buttonReloadConcessioni.addClickHandler(new ClickHandler() {
|
||||
|
||||
@Override
|
||||
public void onClick(ClickEvent event) {
|
||||
appManagerBus.fireEvent(new GetListOfRecordsEvent(RECORD_TYPE.CONCESSIONE));
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
tabGetListOfProjects.addClickHandler(new ClickHandler() {
|
||||
|
||||
@Override
|
||||
public void onClick(ClickEvent event) {
|
||||
GeonaRecordsPaginatedView grpw = new GeonaRecordsPaginatedView(appManagerBus, RECORD_TYPE.CONCESSIONE,
|
||||
null, DISPLAY_FIELD.NAME);
|
||||
showListOfConcessioniView(grpw);
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds the form panel.
|
||||
*
|
||||
* @param formPanel the form panel
|
||||
*/
|
||||
public void addFormPanel(GeonaDataEntryMainForm formPanel) {
|
||||
geonaMainFormPanel.add(formPanel);
|
||||
}
|
||||
|
||||
public void showListOfConcessioniView(GeonaRecordsPaginatedView grpw) {
|
||||
geonaListOfConcessioniPanel.clear();
|
||||
VerticalPanel htmllPanel = new VerticalPanel();
|
||||
htmllPanel.add(grpw.getCellPanel());
|
||||
htmllPanel.add(grpw.getPagerPanel());
|
||||
geonaListOfConcessioniPanel.add(htmllPanel);
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the loader visible.
|
||||
*
|
||||
* @param txtHTML the txt HTML
|
||||
* @param visible the visible
|
||||
*/
|
||||
public void setLoaderVisible(String txtHTML, boolean visible) {
|
||||
loader.setText(txtHTML);
|
||||
loader.setVisible(visible);
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,52 @@
|
|||
<!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent">
|
||||
<ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder"
|
||||
xmlns:g="urn:import:com.google.gwt.user.client.ui"
|
||||
xmlns:b="urn:import:com.github.gwtbootstrap.client.ui"
|
||||
xmlns:m="urn:import:org.gcube.portlets.user.geoportaldataentry.client.ui"
|
||||
xmlns:r="urn:import:org.gcube.portlets.user.geoportaldataentry.client.ui.utils">
|
||||
|
||||
<ui:style>
|
||||
.important {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.custom-page-header {
|
||||
padding: 10px;
|
||||
background-color: #f5f5f5;
|
||||
margin-bottom: 10px;
|
||||
border: 1px solid #eee;
|
||||
}
|
||||
</ui:style>
|
||||
<g:HTMLPanel>
|
||||
<b:PageHeader subtext="data entry facility"
|
||||
styleName="{style.custom-page-header}">GeoNa</b:PageHeader>
|
||||
<b:TabPanel tabPosition="top" ui:field="tabPanel">
|
||||
<b:Tab icon="FILE_TEXT" heading="New Project" active="true"
|
||||
ui:field="tabNewProject">
|
||||
<b:Navbar>
|
||||
<b:Brand>New Project</b:Brand>
|
||||
<b:Nav>
|
||||
<b:NavLink ui:field="buttCreateNewProject"
|
||||
title="Create a new Project" icon="FILE">Create New Project</b:NavLink>
|
||||
</b:Nav>
|
||||
</b:Navbar>
|
||||
<b:Divider />
|
||||
<r:LoaderIcon ui:field="loader"></r:LoaderIcon>
|
||||
<g:HTMLPanel ui:field="geonaMainFormPanel"></g:HTMLPanel>
|
||||
|
||||
</b:Tab>
|
||||
<b:Tab icon="TABLE" heading="List of Projects"
|
||||
ui:field="tabGetListOfProjects">
|
||||
<b:Navbar>
|
||||
<b:Brand>List of Projects</b:Brand>
|
||||
<b:Nav>
|
||||
<b:NavLink ui:field="buttonReloadConcessioni"
|
||||
title="Create a new Project" icon="ROTATE_RIGHT">Reload Projects</b:NavLink>
|
||||
</b:Nav>
|
||||
</b:Navbar>
|
||||
<b:Divider />
|
||||
<g:HTMLPanel ui:field="geonaListOfConcessioniPanel"></g:HTMLPanel>
|
||||
</b:Tab>
|
||||
</b:TabPanel>
|
||||
</g:HTMLPanel>
|
||||
</ui:UiBinder>
|
|
@ -1,74 +0,0 @@
|
|||
package org.gcube.portlets.user.geoportaldataentry.client.ui;
|
||||
|
||||
import org.gcube.portlets.user.geoportaldataentry.client.ConstantsGeoPortalDataEntryApp.RECORD_TYPE;
|
||||
import org.gcube.portlets.user.geoportaldataentry.client.events.CreateNewProjectEvent;
|
||||
import org.gcube.portlets.user.geoportaldataentry.client.events.GetListOfRecordsEvent;
|
||||
|
||||
import com.github.gwtbootstrap.client.ui.NavLink;
|
||||
import com.google.gwt.core.client.GWT;
|
||||
import com.google.gwt.event.dom.client.ClickEvent;
|
||||
import com.google.gwt.event.dom.client.ClickHandler;
|
||||
import com.google.gwt.event.shared.EventBus;
|
||||
import com.google.gwt.event.shared.HandlerManager;
|
||||
import com.google.gwt.uibinder.client.UiBinder;
|
||||
import com.google.gwt.uibinder.client.UiField;
|
||||
import com.google.gwt.user.client.ui.Composite;
|
||||
import com.google.gwt.user.client.ui.Widget;
|
||||
|
||||
public class GeonaNavigationBar extends Composite {
|
||||
|
||||
private static GeonaNavigationBarUiBinder uiBinder = GWT.create(GeonaNavigationBarUiBinder.class);
|
||||
|
||||
interface GeonaNavigationBarUiBinder extends UiBinder<Widget, GeonaNavigationBar> {
|
||||
}
|
||||
|
||||
private EventBus eventBus;
|
||||
|
||||
public GeonaNavigationBar() {
|
||||
initWidget(uiBinder.createAndBindUi(this));
|
||||
bindEvents();
|
||||
}
|
||||
|
||||
private void bindEvents() {
|
||||
linkCreateNewProject.addClickHandler(new ClickHandler() {
|
||||
|
||||
@Override
|
||||
public void onClick(ClickEvent event) {
|
||||
appManagerBus.fireEvent(new CreateNewProjectEvent());
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
linkGetListOfRecords.addClickHandler(new ClickHandler() {
|
||||
|
||||
@Override
|
||||
public void onClick(ClickEvent event) {
|
||||
appManagerBus.fireEvent(new GetListOfRecordsEvent(RECORD_TYPE.CONCESSIONE));
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
@UiField
|
||||
NavLink linkCreateNewProject;
|
||||
|
||||
@UiField
|
||||
NavLink linkGetListOfRecords;
|
||||
|
||||
private HandlerManager appManagerBus;
|
||||
|
||||
public GeonaNavigationBar(String firstName) {
|
||||
initWidget(uiBinder.createAndBindUi(this));
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the app manager bus.
|
||||
*
|
||||
* @param appManagerBus the new app manager bus
|
||||
*/
|
||||
public void setAppManagerBus(HandlerManager appManagerBus) {
|
||||
this.appManagerBus = appManagerBus;
|
||||
}
|
||||
|
||||
}
|
|
@ -1,20 +0,0 @@
|
|||
<!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent">
|
||||
<ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder"
|
||||
xmlns:g="urn:import:com.google.gwt.user.client.ui"
|
||||
xmlns:b="urn:import:com.github.gwtbootstrap.client.ui">
|
||||
<ui:style>
|
||||
.important {
|
||||
font-weight: bold;
|
||||
}
|
||||
</ui:style>
|
||||
<g:HTMLPanel>
|
||||
<b:Navbar>
|
||||
<b:Nav>
|
||||
<b:NavLink ui:field="linkCreateNewProject"
|
||||
title="Create a new Project">Create new Project</b:NavLink>
|
||||
<b:NavLink ui:field="linkGetListOfRecords"
|
||||
title="Get List of Concessioni">Get List of Concessioni</b:NavLink>
|
||||
</b:Nav>
|
||||
</b:Navbar>
|
||||
</g:HTMLPanel>
|
||||
</ui:UiBinder>
|
|
@ -69,7 +69,7 @@ public class GeonaRecordsPaginatedView {
|
|||
orginalLoadingIndicator = itemsTable.getCellTable().getLoadingIndicator();
|
||||
initPagination(ITEMS_PER_PAGE);
|
||||
// loadNewPage(ITEM_START_INDEX, ITEMS_PER_PAGE, false);
|
||||
loadItemsForStatus(recordType);
|
||||
loadItemsForType(recordType);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -114,8 +114,10 @@ public class GeonaRecordsPaginatedView {
|
|||
* @param startIdx the start idx
|
||||
* @param limit the limit
|
||||
* @param resetStore the reset store
|
||||
* @param invalidCache the invalid cache
|
||||
*/
|
||||
private void loadNewPage(final int startIdx, final int limit, final boolean resetStore) {
|
||||
private void loadNewPage(final int startIdx, final int limit, final boolean resetStore,
|
||||
final boolean invalidCache) {
|
||||
// initFirstRangeChanged = resetStore;
|
||||
GWT.log("loadNewPage with parameters [startIdx: " + startIdx + ", limit: " + limit + ", resetStore:"
|
||||
+ resetStore + "]");
|
||||
|
@ -131,18 +133,18 @@ public class GeonaRecordsPaginatedView {
|
|||
getTableDataProvider().updateRowCount(ITEMS_PER_PAGE, false);
|
||||
}
|
||||
|
||||
loadItemsForStatus(newStartIndex, limit, serverStartIndex);
|
||||
loadConcessioni(newStartIndex, limit, serverStartIndex, invalidCache);
|
||||
}
|
||||
|
||||
/**
|
||||
* Load items for status.
|
||||
* Load items for type.
|
||||
*
|
||||
* @param recordType the record type
|
||||
*/
|
||||
public void loadItemsForStatus(RECORD_TYPE recordType) {
|
||||
public void loadItemsForType(RECORD_TYPE recordType) {
|
||||
this.recordType = recordType;
|
||||
getCellTable().setVisibleRangeAndClearData(new Range(ITEM_START_INDEX, ITEMS_PER_PAGE), false);
|
||||
loadNewPage(ITEM_START_INDEX, ITEMS_PER_PAGE, true);
|
||||
loadNewPage(ITEM_START_INDEX, ITEMS_PER_PAGE, true, true);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -185,20 +187,20 @@ public class GeonaRecordsPaginatedView {
|
|||
}
|
||||
|
||||
/**
|
||||
* Load items for status.
|
||||
* Load concessioni.
|
||||
*
|
||||
* @param <T> the generic type
|
||||
* @param newStartIndex the new start index
|
||||
* @param limit the limit
|
||||
* @param serverIndex the server index
|
||||
*/
|
||||
private <T> void loadItemsForStatus(int newStartIndex, int limit, int serverIndex) {
|
||||
private <T> void loadConcessioni(int newStartIndex, int limit, int serverIndex, boolean invalidCache) {
|
||||
showLoading(true);
|
||||
|
||||
GWT.log("calling loadItemsForStatus with parameters [startIndex: " + newStartIndex + ", limit: " + limit
|
||||
+ ", serverIndex:" + serverIndex + "]");
|
||||
|
||||
GeoPortalDataEntryApp.greetingService.getListConcessioni(newStartIndex, limit,
|
||||
GeoPortalDataEntryApp.greetingService.getListConcessioni(newStartIndex, limit, invalidCache,
|
||||
new AsyncCallback<SearchedData>() {
|
||||
|
||||
@Override
|
||||
|
@ -242,7 +244,7 @@ public class GeonaRecordsPaginatedView {
|
|||
public List<ConcessioneDV> getSelectItems() {
|
||||
return itemsTable.getSelectedItems();
|
||||
}
|
||||
|
||||
|
||||
// int latestRangeStart = -1;
|
||||
// int latestRangeLenght = -1;
|
||||
|
||||
|
@ -269,7 +271,7 @@ public class GeonaRecordsPaginatedView {
|
|||
|
||||
int start = range.getStart();
|
||||
int length = range.getLength();
|
||||
|
||||
|
||||
// if(latestRangeStart!=start || latestRangeLenght!=length) {
|
||||
// GWT.log("ranges really changed");
|
||||
// latestRangeStart = start;
|
||||
|
@ -285,7 +287,7 @@ public class GeonaRecordsPaginatedView {
|
|||
return;
|
||||
}
|
||||
GWT.log("Range changed: " + start + " " + length + " visible count: " + display.getVisibleItemCount());
|
||||
loadNewPage(start, length, false);
|
||||
loadNewPage(start, length, false, false);
|
||||
// eventBus.fireEvent(new TableRangeViewChangedEvent<T>(start, length));
|
||||
|
||||
}
|
||||
|
|
|
@ -113,25 +113,6 @@ public class ItemsTable<T extends ConcessioneDV> extends AbstractItemsCellTable<
|
|||
this.isAsyncronusTable = dataProvider instanceof ListDataProvider ? false : true;
|
||||
setEmptyTableMessage(NO_DATA);
|
||||
|
||||
// final CheckboxCell cellCheckBox = new CheckboxCell(true, false);
|
||||
// Column<T, Boolean> checkColumn = new Column<T, Boolean>(cellCheckBox) {
|
||||
// @Override
|
||||
// public Boolean getValue(T object) {
|
||||
// // Get the value from the selection model.
|
||||
// return theSelectionModel.isSelected(object);
|
||||
// }
|
||||
//
|
||||
// @Override
|
||||
// public void render(Context context, T object, SafeHtmlBuilder sb) {
|
||||
// super.render(context, object, sb);
|
||||
// GWT.log("added checkbox: " + cellCheckBox + " to object: " + object);
|
||||
// }
|
||||
//
|
||||
// };
|
||||
//
|
||||
// sortedCellTable.addColumn(checkColumn, "", false);
|
||||
// sortedCellTable.setColumnWidth(checkColumn, 40, Unit.PX);
|
||||
|
||||
if (this.displayFields.contains(DISPLAY_FIELD.NAME)) {
|
||||
|
||||
// NAME
|
||||
|
@ -418,20 +399,6 @@ public class ItemsTable<T extends ConcessioneDV> extends AbstractItemsCellTable<
|
|||
|
||||
}
|
||||
|
||||
// /**
|
||||
// * To date format string.
|
||||
// *
|
||||
// * @param dateTime the date time
|
||||
// * @return the string
|
||||
// */
|
||||
// public static Date toDisplayDate(Date dateTime) {
|
||||
//
|
||||
// if(dateTime==null)
|
||||
// return null;
|
||||
//
|
||||
// return new Date(dtformat.format(dateTime));
|
||||
// }
|
||||
|
||||
private String toDisplayAuthors(List<String> authors) {
|
||||
String toDisplay = "";
|
||||
if (authors == null)
|
||||
|
|
|
@ -0,0 +1,152 @@
|
|||
/**
|
||||
*
|
||||
*/
|
||||
package org.gcube.portlets.user.geoportaldataentry.client.ui.utils;
|
||||
|
||||
|
||||
|
||||
|
||||
import org.gcube.portlets.user.geoportaldataentry.client.resource.Images;
|
||||
|
||||
import com.google.gwt.dom.client.Style.Unit;
|
||||
import com.google.gwt.event.dom.client.ClickEvent;
|
||||
import com.google.gwt.event.dom.client.ClickHandler;
|
||||
import com.google.gwt.resources.client.ImageResource;
|
||||
import com.google.gwt.user.client.ui.Button;
|
||||
import com.google.gwt.user.client.ui.DialogBox;
|
||||
import com.google.gwt.user.client.ui.DockPanel;
|
||||
import com.google.gwt.user.client.ui.HTML;
|
||||
import com.google.gwt.user.client.ui.HasHorizontalAlignment;
|
||||
import com.google.gwt.user.client.ui.HorizontalPanel;
|
||||
import com.google.gwt.user.client.ui.Image;
|
||||
import com.google.gwt.user.client.ui.VerticalPanel;
|
||||
import com.google.gwt.user.client.ui.Widget;
|
||||
|
||||
|
||||
/**
|
||||
* The Class DialogConfirm.
|
||||
*
|
||||
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
|
||||
* Feb 19, 2015
|
||||
*/
|
||||
public class DialogConfirm extends DialogBox implements ClickHandler {
|
||||
|
||||
private DockPanel dock = new DockPanel();
|
||||
private Button yesButton;
|
||||
private VerticalPanel vpContainer;
|
||||
private ImageResource loading = Images.ICONS.loading();
|
||||
private HorizontalPanel hpButtons = new HorizontalPanel();
|
||||
private Button noButton;
|
||||
/**
|
||||
* Instantiates a new dialog confirm.
|
||||
*
|
||||
* @param img the img
|
||||
* @param caption the caption
|
||||
* @param text the text
|
||||
*/
|
||||
public DialogConfirm(Image img, String caption, String text) {
|
||||
//getElement().setClassName("gwt-DialogBoxNew");
|
||||
dock.setSpacing(4);
|
||||
dock.setWidth("100%");
|
||||
setText(caption);
|
||||
// setHeading(caption);
|
||||
|
||||
yesButton = new Button("Yes");
|
||||
noButton = new Button("No", this);
|
||||
|
||||
noButton.addClickHandler(new ClickHandler() {
|
||||
|
||||
@Override
|
||||
public void onClick(ClickEvent event) {
|
||||
hide();
|
||||
}
|
||||
});
|
||||
|
||||
vpContainer = new VerticalPanel();
|
||||
vpContainer.getElement().getStyle().setMargin(20.0, Unit.PX);
|
||||
vpContainer.add(new HTML(text));
|
||||
hpButtons = new HorizontalPanel();
|
||||
hpButtons.setHorizontalAlignment(HasHorizontalAlignment.ALIGN_CENTER);
|
||||
// hpButtons.getElement().getStyle().setMarginTop(20.0, Unit.PX);
|
||||
hpButtons.setSpacing(3);
|
||||
yesButton.getElement().getStyle().setMarginRight(20.0, Unit.PX);
|
||||
hpButtons.add(yesButton);
|
||||
hpButtons.add(noButton);
|
||||
|
||||
dock.add(hpButtons, DockPanel.SOUTH);
|
||||
dock.setCellHorizontalAlignment(hpButtons, DockPanel.ALIGN_CENTER);
|
||||
|
||||
if (img != null)
|
||||
dock.add(img, DockPanel.WEST);
|
||||
|
||||
dock.add(vpContainer, DockPanel.CENTER);
|
||||
setWidget(dock);
|
||||
// add(dock);
|
||||
}
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
*
|
||||
* @see
|
||||
* com.google.gwt.event.dom.client.ClickHandler#onClick(com.google.gwt.event
|
||||
* .dom.client.ClickEvent)
|
||||
*/
|
||||
@Override
|
||||
public void onClick(ClickEvent event) {
|
||||
// hide();
|
||||
}
|
||||
|
||||
/**
|
||||
* Loader.
|
||||
*
|
||||
* @param message the message
|
||||
*/
|
||||
public void loader(String message){
|
||||
try{
|
||||
dock.remove(hpButtons);
|
||||
}catch(Exception e){}
|
||||
vpContainer.clear();
|
||||
HorizontalPanel hpMask = new HorizontalPanel();
|
||||
hpMask.add(new Image(loading));
|
||||
HTML html = new HTML(message);
|
||||
html.getElement().getStyle().setMarginLeft(5, Unit.PX);
|
||||
hpMask.add(html);
|
||||
vpContainer.add(hpMask);
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds the to center panel.
|
||||
*
|
||||
* @param w the w
|
||||
*/
|
||||
public void addToCenterPanel(Widget w) {
|
||||
vpContainer.add(w);
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the dock.
|
||||
*
|
||||
* @return the dock
|
||||
*/
|
||||
public DockPanel getDock() {
|
||||
return dock;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the yes button.
|
||||
*
|
||||
* @return the yes button
|
||||
*/
|
||||
public Button getYesButton() {
|
||||
return yesButton;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the no button.
|
||||
*
|
||||
* @return the no button
|
||||
*/
|
||||
public Button getNoButton() {
|
||||
return noButton;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,30 @@
|
|||
package org.gcube.portlets.user.geoportaldataentry.client.ui.utils;
|
||||
|
||||
import com.google.gwt.core.client.JavaScriptObject;
|
||||
|
||||
/**
|
||||
* @author Francesco Mangiacrapa francesco.mangiacrapa{@literal @}isti.cnr.it
|
||||
* Sep 4, 2013
|
||||
*
|
||||
*/
|
||||
public final class NewBrowserWindow extends JavaScriptObject {
|
||||
// All types that extend JavaScriptObject must have a protected,
|
||||
// no-args constructor.
|
||||
protected NewBrowserWindow() {
|
||||
}
|
||||
|
||||
public static native NewBrowserWindow open(String url, String target,
|
||||
String options) /*-{
|
||||
return $wnd.open(url, target, options);
|
||||
}-*/;
|
||||
|
||||
public native void close() /*-{
|
||||
this.close();
|
||||
}-*/;
|
||||
|
||||
public native void setUrl(String url) /*-{
|
||||
if (this.location) {
|
||||
this.location = url;
|
||||
}
|
||||
}-*/;
|
||||
}
|
|
@ -16,9 +16,11 @@ import org.gcube.application.geoportal.common.rest.MongoConcessioni;
|
|||
import org.gcube.application.geoportal.common.rest.TempFile;
|
||||
import org.gcube.application.geoportalcommon.ConvertToDataViewModel;
|
||||
import org.gcube.application.geoportalcommon.GeoportalCommon;
|
||||
import org.gcube.application.geoportalcommon.shared.GeoNaDataViewerProfile;
|
||||
import org.gcube.application.geoportalcommon.shared.GeoNaItemRef;
|
||||
import org.gcube.application.geoportalcommon.shared.products.ConcessioneDV;
|
||||
import org.gcube.portlets.user.geoportaldataentry.client.ConcessioniFormCardTitle;
|
||||
import org.gcube.portlets.user.geoportaldataentry.client.ConstantsGeoPortalDataEntryApp.RECORD_TYPE;
|
||||
import org.gcube.portlets.user.geoportaldataentry.client.GeoportalDataEntryService;
|
||||
import org.gcube.portlets.user.geoportaldataentry.shared.CommitReport;
|
||||
import org.gcube.portlets.user.geoportaldataentry.shared.CommitReport.STATE;
|
||||
|
@ -391,12 +393,13 @@ public class GeoportalDataEntryServiceImpl extends RemoteServiceServlet implemen
|
|||
* @throws Exception the exception
|
||||
*/
|
||||
@Override
|
||||
public GeoNaItemRef getLinksFor(String itemId, String recordType) throws Exception {
|
||||
public GeoNaItemRef getLinksFor(String itemId, RECORD_TYPE recordType) throws Exception {
|
||||
LOG.info("getLinksFor called");
|
||||
|
||||
SessionUtil.getCurrentContext(this.getThreadLocalRequest(), true);
|
||||
GeoportalCommon gc = new GeoportalCommon();
|
||||
GeoNaItemRef item = new GeoNaItemRef(itemId, recordType.toLowerCase());
|
||||
GeoNaDataViewerProfile grViewerProfile = SessionUtil.getGeportalViewerResourceProfile(getThreadLocalRequest());
|
||||
GeoportalCommon gc = new GeoportalCommon(grViewerProfile);
|
||||
GeoNaItemRef item = new GeoNaItemRef(itemId, recordType.toString().toLowerCase());
|
||||
item = gc.getPublicLinksFor(item);
|
||||
LOG.info("Returning: " + item);
|
||||
return item;
|
||||
|
@ -405,17 +408,20 @@ public class GeoportalDataEntryServiceImpl extends RemoteServiceServlet implemen
|
|||
/**
|
||||
* Gets the list concessioni.
|
||||
*
|
||||
* @param start the start
|
||||
* @param offset the offset
|
||||
* @param start the start
|
||||
* @param limit the limit
|
||||
* @param reloadFromService if true, ignore the concessioni saved in session and
|
||||
* reload them from service
|
||||
* @return the list concessioni
|
||||
* @throws Exception the exception
|
||||
*/
|
||||
@Override
|
||||
public SearchedData getListConcessioni(Integer start, Integer limit) throws Exception {
|
||||
LOG.info("getListConcessioni called wit start: "+start + ", limit: "+limit);
|
||||
public SearchedData getListConcessioni(Integer start, Integer limit, boolean reloadFromService) throws Exception {
|
||||
LOG.info("getListConcessioni called wit start: " + start + ", limit: " + limit);
|
||||
|
||||
try {
|
||||
List<Concessione> listOfConcessioni = SessionUtil.getListOfConcessioni(getThreadLocalRequest());
|
||||
List<Concessione> listOfConcessioni = SessionUtil.getListOfConcessioni(getThreadLocalRequest(),
|
||||
reloadFromService);
|
||||
int listConcessioniSize = listOfConcessioni.size();
|
||||
|
||||
List<Concessione> toReturn = new ArrayList<Concessione>();
|
||||
|
@ -425,27 +431,17 @@ public class GeoportalDataEntryServiceImpl extends RemoteServiceServlet implemen
|
|||
toReturn.addAll(listOfConcessioni);
|
||||
startIndex = 0;
|
||||
limitIndex = listConcessioniSize;
|
||||
}else {
|
||||
// if (start < 0)
|
||||
// start = 0;
|
||||
//
|
||||
// if (start > listConcessioniSize)
|
||||
// start = listConcessioniSize;
|
||||
//
|
||||
// if (limit > listConcessioniSize)
|
||||
// limit = listConcessioniSize;
|
||||
|
||||
} else {
|
||||
startIndex = start;
|
||||
limitIndex = start + limit;
|
||||
if(limitIndex>listConcessioniSize) {
|
||||
if (limitIndex > listConcessioniSize) {
|
||||
limitIndex = listConcessioniSize;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
SearchedData searchedData = new SearchedData(start, limit, startIndex, false);
|
||||
searchedData.setTotalItems(listConcessioniSize);
|
||||
|
||||
|
||||
toReturn = listOfConcessioni.subList(startIndex, limitIndex);
|
||||
|
||||
List<ConcessioneDV> toReturnList = new ArrayList<ConcessioneDV>(toReturn.size());
|
||||
|
@ -456,7 +452,7 @@ public class GeoportalDataEntryServiceImpl extends RemoteServiceServlet implemen
|
|||
}
|
||||
|
||||
searchedData.setData(toReturnList);
|
||||
|
||||
|
||||
if (listConcessioniSize == limit || listConcessioniSize == 0) {
|
||||
LOG.debug("Page completed returning " + listConcessioniSize + " items");
|
||||
int newOffset = startIndex + start;
|
||||
|
@ -502,4 +498,28 @@ public class GeoportalDataEntryServiceImpl extends RemoteServiceServlet implemen
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean deleteRecord(String itemId, RECORD_TYPE recordType) throws Exception {
|
||||
try {
|
||||
|
||||
if (itemId == null)
|
||||
throw new Exception("Item id is null");
|
||||
|
||||
if (recordType.equals(RECORD_TYPE.CONCESSIONE)) {
|
||||
SessionUtil.getCurrentContext(this.getThreadLocalRequest(), true);
|
||||
ServiceUtil serviceUtil = new ServiceUtil();
|
||||
MongoConcessioni clientMongo = serviceUtil.getInstanceMongoConcessioni();
|
||||
clientMongo.deleteById(itemId);
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
|
||||
} catch (Exception e) {
|
||||
LOG.error("Error on deleting the project with item id: " + itemId, e);
|
||||
throw new Exception(
|
||||
"Error occurred on deleting the project with id: " + itemId + ". Error: " + e.getMessage());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -12,6 +12,8 @@ import javax.servlet.http.HttpSession;
|
|||
|
||||
import org.gcube.application.geoportal.common.model.legacy.Concessione;
|
||||
import org.gcube.application.geoportal.common.rest.MongoConcessioni;
|
||||
import org.gcube.application.geoportalcommon.GeoportalCommon;
|
||||
import org.gcube.application.geoportalcommon.shared.GeoNaDataViewerProfile;
|
||||
import org.gcube.common.authorization.library.provider.SecurityTokenProvider;
|
||||
import org.gcube.common.portal.PortalContext;
|
||||
import org.gcube.common.scope.api.ScopeProvider;
|
||||
|
@ -26,16 +28,16 @@ import org.slf4j.LoggerFactory;
|
|||
|
||||
import com.liferay.portal.service.UserLocalServiceUtil;
|
||||
|
||||
|
||||
/**
|
||||
* The Class SessionUtil.
|
||||
*
|
||||
* @author Francesco Mangiacrapa at ISTI-CNR (francesco.mangiacrapa@isti.cnr.it)
|
||||
*
|
||||
* Oct 20, 2020
|
||||
* Oct 20, 2020
|
||||
*/
|
||||
public class SessionUtil {
|
||||
|
||||
private static final String GEONA_DATAVIEWER_PROFILE = "GEONA_DATAVIEWER_PROFILE";
|
||||
private static final String LIST_OF_CONCESSIONI = "LIST_OF_CONCESSIONI";
|
||||
/** The log. */
|
||||
private static Logger LOG = LoggerFactory.getLogger(SessionUtil.class);
|
||||
|
@ -49,7 +51,7 @@ public class SessionUtil {
|
|||
try {
|
||||
UserLocalServiceUtil.getService();
|
||||
return true;
|
||||
}catch (Exception ex) {
|
||||
} catch (Exception ex) {
|
||||
LOG.debug("Development Mode ON");
|
||||
return false;
|
||||
}
|
||||
|
@ -61,9 +63,9 @@ public class SessionUtil {
|
|||
* @param request the request
|
||||
* @return a GcubeUser object
|
||||
*/
|
||||
public static GCubeUser getCurrentUser(HttpServletRequest request){
|
||||
public static GCubeUser getCurrentUser(HttpServletRequest request) {
|
||||
|
||||
if(request == null)
|
||||
if (request == null)
|
||||
throw new IllegalArgumentException("HttpServletRequest is null!");
|
||||
|
||||
PortalContext pContext = PortalContext.getConfiguration();
|
||||
|
@ -75,26 +77,27 @@ public class SessionUtil {
|
|||
/**
|
||||
* Retrieve the current scope by using the portal manager.
|
||||
*
|
||||
* @param request the request
|
||||
* @param setContextsInThread set the scope and the security token into current thread
|
||||
* @param request the request
|
||||
* @param setContextsInThread set the scope and the security token into current
|
||||
* thread
|
||||
* @return a GcubeUser object
|
||||
*/
|
||||
public static String getCurrentContext(HttpServletRequest request, boolean setContextsInThread){
|
||||
public static String getCurrentContext(HttpServletRequest request, boolean setContextsInThread) {
|
||||
|
||||
if(request == null)
|
||||
if (request == null)
|
||||
throw new IllegalArgumentException("HttpServletRequest is null!");
|
||||
|
||||
PortalContext pContext = PortalContext.getConfiguration();
|
||||
String context = pContext.getCurrentScope(request);
|
||||
|
||||
if(setContextsInThread) {
|
||||
|
||||
if (setContextsInThread) {
|
||||
GCubeUser user = getCurrentUser(request);
|
||||
String token = pContext.getCurrentUserToken(context, user.getUsername());
|
||||
|
||||
if(context!=null)
|
||||
|
||||
if (context != null)
|
||||
ScopeProvider.instance.set(context);
|
||||
|
||||
if(token!=null)
|
||||
|
||||
if (token != null)
|
||||
SecurityTokenProvider.instance.set(token);
|
||||
}
|
||||
|
||||
|
@ -107,11 +110,11 @@ public class SessionUtil {
|
|||
* @param scope the scope
|
||||
* @return the group from scope
|
||||
* @throws UserManagementSystemException the user management system exception
|
||||
* @throws GroupRetrievalFault the group retrieval fault
|
||||
* @throws GroupRetrievalFault the group retrieval fault
|
||||
*/
|
||||
public static GCubeGroup getGroupFromScope(String scope) throws UserManagementSystemException, GroupRetrievalFault{
|
||||
public static GCubeGroup getGroupFromScope(String scope) throws UserManagementSystemException, GroupRetrievalFault {
|
||||
|
||||
if(scope == null || scope.isEmpty())
|
||||
if (scope == null || scope.isEmpty())
|
||||
throw new IllegalArgumentException("Scope is missing here!!");
|
||||
|
||||
GroupManager gm = new LiferayGroupManager();
|
||||
|
@ -119,18 +122,24 @@ public class SessionUtil {
|
|||
return gm.getGroup(groupId);
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Gets the list of concessioni.
|
||||
*
|
||||
* @param httpServletRequest the http servlet request
|
||||
* @param reloadFromService the reload from service
|
||||
* @return the list of concessioni
|
||||
* @throws Exception the exception
|
||||
*/
|
||||
public static List<Concessione> getListOfConcessioni(HttpServletRequest httpServletRequest) throws Exception {
|
||||
public static List<Concessione> getListOfConcessioni(HttpServletRequest httpServletRequest,
|
||||
boolean reloadFromService) throws Exception {
|
||||
HttpSession session = httpServletRequest.getSession();
|
||||
List<Concessione> listOfConcessioni = (List<Concessione>) session.getAttribute(LIST_OF_CONCESSIONI);
|
||||
|
||||
// setting null to force reloading from service
|
||||
if (reloadFromService)
|
||||
listOfConcessioni = null;
|
||||
|
||||
if (listOfConcessioni == null) {
|
||||
listOfConcessioni = new ArrayList<Concessione>();
|
||||
LOG.info("Loading list of concessione from client mongo");
|
||||
|
@ -142,16 +151,40 @@ public class SessionUtil {
|
|||
while (concessioni.hasNext()) {
|
||||
Concessione concessione = (Concessione) concessioni.next();
|
||||
listOfConcessioni.add(concessione);
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
LOG.debug("Got list of concessioni from client mongo: "+listOfConcessioni);
|
||||
LOG.debug("Got list of concessioni from client mongo: " + listOfConcessioni);
|
||||
session.setAttribute(LIST_OF_CONCESSIONI, listOfConcessioni);
|
||||
LOG.info("Saved in session list of concessioni from client mongo with size: "+listOfConcessioni.size());
|
||||
}else
|
||||
LOG.info("Saved in session list of concessioni from client mongo with size: " + listOfConcessioni.size());
|
||||
} else
|
||||
LOG.info("list of concessioni presents in session");
|
||||
|
||||
LOG.info("read list of concessioni with size: "+listOfConcessioni.size());
|
||||
|
||||
LOG.info("read list of concessioni with size: " + listOfConcessioni.size());
|
||||
return listOfConcessioni;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Gets the geportal viewer resource profile.
|
||||
*
|
||||
* @param httpServletRequest the http servlet request
|
||||
* @return the geportal viewer resource profile
|
||||
* @throws Exception the exception
|
||||
*/
|
||||
public static GeoNaDataViewerProfile getGeportalViewerResourceProfile(HttpServletRequest httpServletRequest)
|
||||
throws Exception {
|
||||
HttpSession session = httpServletRequest.getSession();
|
||||
GeoNaDataViewerProfile geoNaDataViewerProfile = (GeoNaDataViewerProfile) session
|
||||
.getAttribute(GEONA_DATAVIEWER_PROFILE);
|
||||
|
||||
if (geoNaDataViewerProfile == null) {
|
||||
GeoportalCommon gc = new GeoportalCommon();
|
||||
geoNaDataViewerProfile = gc.getGeoNaDataViewProfile(null);
|
||||
session.setAttribute(GEONA_DATAVIEWER_PROFILE, geoNaDataViewerProfile);
|
||||
}
|
||||
|
||||
return geoNaDataViewerProfile;
|
||||
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue