Tested the file uploading integration

This commit is contained in:
francesco 2020-10-07 11:15:48 +02:00
parent 375abecc66
commit dee4709750
12 changed files with 178 additions and 68 deletions

View File

@ -1,37 +1,46 @@
<?xml version="1.0" encoding="UTF-8"?><project-modules id="moduleCoreId" project-version="1.5.0">
<wb-module deploy-name="metadata-profile-form-builder-widget-0.1.0-SNAPSHOT">
<wb-resource deploy-path="/" source-path="/target/m2e-wtp/web-resources"/>
<wb-resource deploy-path="/" source-path="/src/main/webapp" tag="defaultRootSource"/>
<wb-resource deploy-path="/WEB-INF/classes" source-path="/src/main/java"/>
<wb-resource deploy-path="/WEB-INF/classes" source-path="/src/main/resources"/>
<property name="context-root" value="metadata-profile-form-builder-widget"/>
<property name="java-output-path" value="/metadata-profile-form-builder-widget/target/classes"/>
</wb-module>
</project-modules>

View File

@ -32,7 +32,7 @@ public class MetadataProfileFormBuilder implements EntryPoint {
String scope = "/gcube/devsec/devVRE";
String secondaryType= "DataCatalogueMetadata";
String secondaryType= "GeoNaMetadata";
HandlerManager eventBus = new HandlerManager(null);
CreateMetadataForm baseForm = new CreateMetadataForm(scope, secondaryType,eventBus);
RootPanel.get(DIV_PORTLET_ID).add(baseForm);

View File

@ -4,7 +4,7 @@
xmlns:b="urn:import:com.github.gwtbootstrap.client.ui">
<ui:style>
.margin-left-max-occurrs {
padding-left: 50px;
padding-left: 1px;
}
</ui:style>
<g:HTMLPanel>

View File

@ -36,9 +36,13 @@ import com.github.gwtbootstrap.client.ui.Popover;
import com.github.gwtbootstrap.client.ui.TabPanel;
import com.github.gwtbootstrap.client.ui.constants.AlertType;
import com.google.gwt.core.client.GWT;
import com.google.gwt.core.client.Scheduler;
import com.google.gwt.core.client.Scheduler.ScheduledCommand;
import com.google.gwt.dom.client.Document;
import com.google.gwt.event.dom.client.ChangeEvent;
import com.google.gwt.event.dom.client.ChangeHandler;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.DomEvent;
import com.google.gwt.event.shared.HandlerManager;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
@ -75,6 +79,7 @@ public class CreateMetadataForm extends Composite{
@UiField HTMLPanel createDatasetMainPanel;
@UiField ControlGroup customFields;
@UiField ControlGroup customFieldsGroup;
@UiField Button addCustomFieldButton;
@UiField Button createButton;
// @UiField Button resetButton;
@ -174,6 +179,7 @@ public class CreateMetadataForm extends Composite{
});
}
/**
* Instantiates a new creates the dataset form.
@ -263,16 +269,19 @@ public class CreateMetadataForm extends Composite{
for(MetaDataProfileBean metadataBean: profiles){
metadataTypeListbox.addItem(metadataBean.getType());
}
// add handler on select
metadataTypeListbox.addChangeHandler(new ChangeHandler() {
@Override
public void onChange(ChangeEvent event) {
GWT.log("Profile type selection changed...");
String selectedItemText = metadataTypeListbox.getSelectedItemText();
metadataFieldsPanel.clear();
if(selectedItemText.equals(NONE_PROFILE)){
metadataFieldsPanel.setVisible(false);
selectedProfile.setText("Selected Profile is " + NONE_PROFILE);
//receivedBean.setChosenType(null);
}else{
//receivedBean.setChosenType(selectedItemText);
@ -284,7 +293,7 @@ public class CreateMetadataForm extends Composite{
}
}
});
}else{
// just hide this listbox
metadataTypesControlGroup.setVisible(false);
@ -292,6 +301,18 @@ public class CreateMetadataForm extends Composite{
listOfMetadataFields.clear();
//receivedBean.setChosenType(null);
}
Scheduler.get().scheduleDeferred(new ScheduledCommand() {
@Override
public void execute() {
if(profiles.size()==1) {
metadataTypeListbox.setSelectedValue(profiles.get(0).getType());
DomEvent.fireNativeEvent(Document.get().createChangeEvent(), metadataTypeListbox);
}
}
});
}
/**
@ -624,27 +645,26 @@ public class CreateMetadataForm extends Composite{
*/
private void alertOnCreate(String text, AlertType type, boolean hideAfterAWhile){
Window.alert("Called alertOnCreate");
//Window.alert("Called alertOnCreate");
onCreateAlertBlock.setText(text);
onCreateAlertBlock.setType(type);
onCreateAlertBlock.setVisible(true);
createButton.setEnabled(true);
//goBackButtonSecondStep.setEnabled(true);
// onCreateAlertBlock.setText(text);
// onCreateAlertBlock.setType(type);
// onCreateAlertBlock.setVisible(true);
// createButton.setEnabled(true);
// goBackButtonSecondStep.setEnabled(true);
//
// if(hideAfterAWhile){
// // hide after some seconds
// Timer t = new Timer() {
//
// @Override
// public void run() {
//
// onCreateAlertBlock.setVisible(false);
//
// }
// };
// t.schedule(10000);
// }
if(hideAfterAWhile){
// hide after some seconds
Timer t = new Timer() {
@Override
public void run() {
onCreateAlertBlock.setVisible(false);
}
};
t.schedule(10000);
}
}
/**
@ -720,6 +740,12 @@ public class CreateMetadataForm extends Composite{
infoBlock.setVisible(visible);
}
public void showCustomFieldsEntries(boolean show) {
this.customFields.setVisible(show);
this.customFieldsGroup.setVisible(show);
}
// /**
// * On selected license change.

View File

@ -3,7 +3,6 @@
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.widgets.mpformbuilder.client.ui.tags"
xmlns:f="urn:import:org.gcube.portlets.widgets.mpformbuilder.client.ui.upload"
xmlns:u="urn:import:org.gcube.portlets.widgets.mpformbuilder.client.ui.utils">
<ui:style>
.form-main-style {
@ -96,8 +95,6 @@
<!-- TAGS Panel -->
<!-- <m:TagsPanel ui:field="tagsPanel"></m:TagsPanel> -->
<f:FileUpload ui:field="dialogUpload"></f:FileUpload>
<!-- Alert block on continue -->
<b:AlertBlock type="INFO" close="false"
animation="true" visible="false" ui:field="onContinueAlertBlock">
@ -132,11 +129,11 @@
visible="false" width="100%"></g:VerticalPanel>
<!-- Custom fields can be dinamically added -->
<b:ControlGroup ui:field="customFields">
<b:ControlGroup ui:field="customFields" visible="false">
<b:ControlLabel>Custom Field(s):</b:ControlLabel>
</b:ControlGroup>
<b:ControlGroup>
<b:ControlGroup ui:field="customFieldsGroup" visible="false">
<b:Controls>
<span style="float:right; width:5%; color: #aaaaaa;">
<b:Popover ui:field="popoverCustomFields" html="true"

View File

@ -7,6 +7,7 @@ import org.gcube.portlets.widgets.mpformbuilder.client.events.CloseCreationFormE
import org.gcube.portlets.widgets.mpformbuilder.client.events.CloseCreationFormEventHandler;
import org.gcube.portlets.widgets.mpformbuilder.client.openlayerwidget.GeoJsonAreaSelectionDialog;
import org.gcube.portlets.widgets.mpformbuilder.client.ui.timeandranges.DataTimeBox;
import org.gcube.portlets.widgets.mpformbuilder.client.ui.upload.MultipleDilaogUpload;
import org.gcube.portlets.widgets.mpformbuilder.client.ui.utils.GcubeDialogExtended;
import org.gcube.portlets.widgets.mpformbuilder.shared.metadata.FieldAsGroup;
import org.gcube.portlets.widgets.mpformbuilder.shared.metadata.FieldAsTag;
@ -33,15 +34,22 @@ import com.google.gwt.dom.client.SpanElement;
import com.google.gwt.dom.client.Style.Cursor;
import com.google.gwt.dom.client.Style.Display;
import com.google.gwt.dom.client.Style.Unit;
import com.google.gwt.event.dom.client.ChangeEvent;
import com.google.gwt.event.dom.client.ChangeHandler;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.event.dom.client.DomEvent;
import com.google.gwt.event.dom.client.DomEvent.Type;
import com.google.gwt.event.logical.shared.ResizeEvent;
import com.google.gwt.event.logical.shared.ResizeHandler;
import com.google.gwt.event.shared.EventHandler;
import com.google.gwt.event.shared.GwtEvent;
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.uibinder.client.UiHandler;
import com.google.gwt.user.client.Command;
import com.google.gwt.user.client.Event;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.FlowPanel;
@ -52,6 +60,7 @@ import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.SimplePanel;
import com.google.gwt.user.client.ui.VerticalPanel;
import com.google.gwt.user.client.ui.Widget;
import com.google.gwt.view.client.SelectionChangeEvent;
public class MetaDataFieldSkeleton extends Composite {
@ -114,6 +123,8 @@ public class MetaDataFieldSkeleton extends Composite {
// time range separator
public static final String RANGE_SEPARATOR = ",";
private static final String TOOLTIP_MULTISELECTION = "Hold down the Control (CTRL) or Command (CMD) button to select multiple options";
private static final String UPLOAD_MISSING_FILE = "You must upload a file";
public MetaDataFieldSkeleton(final MetadataFieldWrapper field, HandlerManager eventBus) throws Exception {
initWidget(uiBinder.createAndBindUi(this));
@ -298,6 +309,12 @@ public class MetaDataFieldSkeleton extends Composite {
((TextBox) holder).setText(field.getDefaultValue());
break;
case File:
holder = new MultipleDilaogUpload();
break;
case String:
@ -346,6 +363,24 @@ public class MetaDataFieldSkeleton extends Composite {
return;
}
try {
ChangeHandler handler = new ChangeHandler() {
@Override
public void onChange(ChangeEvent event) {
GWT.log("Fired is field value");
removeError();
isFieldValueValid();
}
};
holder.addDomHandler(handler, ChangeEvent.getType());
}catch (Exception e) {
// TODO: handle exception
}
// add custom css properties
controls.addStyleName("form-controls-custom");
@ -591,7 +626,22 @@ public class MetaDataFieldSkeleton extends Composite {
}
return null;
case File:
GWT.log("Checking is valid File");
if (field.getMandatory()) {
if (holder.getClass().equals(MultipleDilaogUpload.class)) {
MultipleDilaogUpload dUpload = (MultipleDilaogUpload) holder;
if(dUpload.getUploadedInfo()!=null && dUpload.getUploadedInfo().getFile()!=null) {
return dUpload.getUploadedInfo().getFile().getTempSystemPath()!=null?null:UPLOAD_MISSING_FILE;
}
}
return UPLOAD_MISSING_FILE;
}
return null;
default:
return null;
@ -724,6 +774,18 @@ public class MetaDataFieldSkeleton extends Composite {
}
}
break;
case File:
if (holder.getClass().equals(MultipleDilaogUpload.class)) {
MultipleDilaogUpload dUpload = (MultipleDilaogUpload) holder;
if(dUpload.getUploadedInfo()!=null) {
String filePath = dUpload.getUploadedInfo().getFile().getTempSystemPath();
toReturn.add(filePath);
}else
toReturn.add(null);
}
break;
default:

View File

@ -255,7 +255,10 @@ private String purgedUploadingFileName;
* @return the uploaded info
*/
public WorkspaceUploaderItem getUploadedInfo() {
return timer.getWorkspaceUploader();
if(timer!=null)
return timer.getLastWorkspaceUploader();
return null;
}
/**

View File

@ -5,7 +5,6 @@ import java.util.Map;
import org.gcube.portlets.widgets.mpformbuilder.client.ui.upload.events.NotifyUploadEvent;
import org.gcube.portlets.widgets.mpformbuilder.client.ui.upload.events.NotifyUploadEvent.UPLOAD_EVENT_TYPE;
import org.gcube.portlets.widgets.mpformbuilder.shared.upload.WorkspaceUploaderItem;
import com.google.gwt.core.shared.GWT;
import com.google.gwt.user.client.Timer;
@ -44,8 +43,9 @@ public class SingleUploadMonitor {
* @param workspaceUploader the workspace uploader
*/
private void startTimer(TimerUpload timer){
GWT.log("Starting new timer for key: "+timer.getWorkspaceUploader().getClientUploadKey());
saveTimer(timer);
String clientUploadKey = timer.getInitWorkspaceUploader().getClientUploadKey();
GWT.log("Starting new timer for key: "+clientUploadKey);
currentTimersRun.put(clientUploadKey, timer);
timer.scheduleRepeating(2000);
}
@ -64,17 +64,6 @@ public class SingleUploadMonitor {
GWT.log("Remove timer for key: "+clientKey+", skypped, already removed?");
}
/**
* Save timer.
*
* @param timer the timer upload
* @param clientKey the client key
*/
private synchronized void saveTimer(TimerUpload timer){
currentTimersRun.put(timer.getWorkspaceUploader().getClientUploadKey(), timer);
}
/**
* Gets the timer.
*

View File

@ -143,13 +143,14 @@ public class TimerUpload extends Timer{
GWT.log("Cancelling timer for "+lastWorkspaceUploader);
super.cancel();
}
/**
* Gets the workspace uploader.
*
* @return the workspace uploader
*/
public WorkspaceUploaderItem getWorkspaceUploader() {
public WorkspaceUploaderItem getInitWorkspaceUploader() {
return initWorkspaceUploader;
}
public WorkspaceUploaderItem getLastWorkspaceUploader() {
return lastWorkspaceUploader;
}
}

View File

@ -184,7 +184,13 @@ public class MetadataDiscovery {
MetadataFieldWrapper wrapperObj = new MetadataFieldWrapper();
wrapperObj.setFieldNameFromCategory(metadataField.getCategoryFieldQName());
wrapperObj.setType(DataTypeWrapper.valueOf(metadataField.getDataType().toString()));
try {
wrapperObj.setType(DataTypeWrapper.valueOf(metadataField.getDataType().toString()));
}catch (Exception e) {
// TODO: handle exception
LOG.warn("No valueOf to DataTypeWrapper for value "+metadataField.getDataType().toString() +", using default String");
wrapperObj.setType(DataTypeWrapper.String);
}
wrapperObj.setDefaultValue(metadataField.getDefaultValue());
wrapperObj.setFieldName(metadataField.getFieldName());
wrapperObj.setMandatory(metadataField.getMandatory());

View File

@ -7,9 +7,6 @@ import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;

View File

@ -1,20 +1,40 @@
package org.gcube.portlets.widgets.mpformbuilder.shared.metadata;
/**
* Data type.
* @see org.gcube.datacatalogue.metadatadiscovery.bean.jaxb.DataType
* @author Costantino Perciante at ISTI-CNR (costantino.perciante@isti.cnr.it)
* The Enum DataTypeWrapper.
* @see org.gcube.common.metadataprofilediscovery.jaxb.DataType
* @author Francesco Mangiacrapa at ISTI-CNR (francesco.mangiacrapa@isti.cnr.it)
*
* Oct 6, 2020
*/
public enum DataTypeWrapper {
/** The String. */
String,
/** The Time. */
Time,
/** The Time interval. */
Time_Interval,
/** The Times list of. */
Times_ListOf,
/** The Text. */
Text,
/** The Boolean. */
Boolean,
/** The Number. */
Number,
GeoJSON;
/** The Geo JSON. */
GeoJSON,
/** The File. */
File;
/**
* Value as String.