Compare commits

...

22 Commits

Author SHA1 Message Date
Francesco Mangiacrapa 6dea686eca added comments. Fixed toString 2024-05-16 10:34:46 +02:00
Francesco Mangiacrapa 5ac20c21c0 removed -SNAPSHOT to be released 2024-03-19 10:19:26 +01:00
Francesco Mangiacrapa e34c151337 Merge pull request 'edit_facility_26115' (!3) from edit_facility_26115 into master
Reviewed-on: #3
2024-03-19 10:17:18 +01:00
Francesco Mangiacrapa 78f7a97385 Merge branch 'master' into edit_facility_26115 2024-03-19 10:17:04 +01:00
Francesco Mangiacrapa 51102c195d Added final to some properties. 2024-02-20 15:18:24 +01:00
Francesco Mangiacrapa 4829f5b959 Updated LoaderIcon 2024-02-16 10:15:52 +01:00
Francesco Mangiacrapa 16c2e98f90 updated the beans 2024-02-15 16:46:36 +01:00
Francesco Mangiacrapa 06b8f1d8d3 removed unused code 2024-02-15 16:27:39 +01:00
Francesco Mangiacrapa 4a25ddf5e4 Removed unused imports 2024-02-14 11:25:47 +01:00
Francesco Mangiacrapa 506df65613 removed catalogue package. Refactored Resource Events 2024-02-12 12:01:59 +01:00
Francesco Mangiacrapa cb9629d85a Updated. Managing addTagElement to Vocabulary 2024-02-08 12:32:20 +01:00
Francesco Mangiacrapa 67591125e6 refactored to CustomFieldEntryProfile 2024-02-05 14:10:57 +01:00
Francesco Mangiacrapa 845a8c4ece refactored beans 2024-02-02 17:00:07 +01:00
Francesco Mangiacrapa 471c1f373c Aligned to ckan-metadata-publisher-widget 2024-02-02 16:52:40 +01:00
Roberto Cirillo 69f0f0e7f7 Update 'pom.xml'
remove SNAPSHOT from maven-portal-bom declaration
2023-09-14 16:28:10 +02:00
Francesco Mangiacrapa f772818288 moved to maven-parent.1.2.0 2023-09-14 15:31:47 +02:00
Francesco Mangiacrapa 898695beea removed -SNAPSHOT to be released 2023-09-14 15:18:50 +02:00
Francesco Mangiacrapa 78c3c06d89 Merge pull request 'task_24166' (!2) from task_24166 into master
Reviewed-on: #2
2023-09-14 15:17:43 +02:00
Francesco Mangiacrapa 669dbb34e8 improved MetadataFieldWrapper by adding current values (as list) 2023-04-21 15:24:08 +02:00
Francesco Mangiacrapa ca51fc0543 in progress on Update Facility 2023-04-21 10:54:57 +02:00
Francesco Mangiacrapa a352933b68 managing the files already uploaded [#24515] 2023-03-28 16:13:21 +02:00
Francesco Mangiacrapa 77c41f2af2 #24515 First version implemented 2023-03-15 11:59:25 +01:00
57 changed files with 1263 additions and 3970 deletions

View File

@ -1,4 +1,5 @@
eclipse.preferences.version=1
lastWarOutDir=/home/francesco-mangiacrapa/git/metadata-profile-form-builder-widget/target/metadata-profile-form-builder-widget-0.1.0-SNAPSHOT
warSrcDir=src/main/webapp
jarsExcludedFromWebInfLib=
lastWarOutDir=/home/francesco-mangiacrapa/git/metadata-profile-form-builder-widget/target/metadata-profile-form-builder-widget-2.0.0
warSrcDir=
warSrcDirIsOutput=false

View File

@ -1,11 +1,11 @@
eclipse.preferences.version=1
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
org.eclipse.jdt.core.compiler.compliance=1.7
org.eclipse.jdt.core.compiler.compliance=1.8
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=ignore
org.eclipse.jdt.core.compiler.release=disabled
org.eclipse.jdt.core.compiler.source=1.7
org.eclipse.jdt.core.compiler.source=1.8

View File

@ -1,62 +1,56 @@
<?xml version="1.0" encoding="UTF-8"?><project-modules id="moduleCoreId" project-version="1.5.0">
<?xml version="1.0" encoding="UTF-8"?><project-modules id="moduleCoreId" project-version="2.0.0">
<wb-module deploy-name="metadata-profile-form-builder-widget-0.1.0-SNAPSHOT">
<wb-module deploy-name="metadata-profile-form-builder-widget-2.0.0">
<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"/>
<wb-resource deploy-path="/WEB-INF/classes" source-path="/src/test/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>

View File

@ -2,7 +2,6 @@
<faceted-project>
<fixed facet="wst.jsdt.web"/>
<installed facet="java" version="1.7"/>
<installed facet="jst.web" version="2.3"/>
<installed facet="com.gwtplugins.gwt.facet" version="1.0"/>
<installed facet="wst.jsdt.web" version="1.0"/>
<installed facet="jst.jaxrs" version="2.0"/>

View File

@ -4,6 +4,19 @@
All notable changes to this project will be documented in this file.
This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [v2.1.1] - 2024-03-19
#### Enhancements
- [#26656] Aligned the data-model to ckan-metadata-publisher-widget
## [v2.1.0] - 2023-02-01
#### Enhancements
- [#23188] Improved Legend "is required field"
- [#24515] Managed the files already uploaded
## [v2.0.0] - 2022-11-14
#### Enhancements

View File

@ -7,14 +7,14 @@
<parent>
<artifactId>maven-parent</artifactId>
<groupId>org.gcube.tools</groupId>
<version>1.1.0</version>
<version>1.2.0</version>
<relativePath />
</parent>
<groupId>org.gcube.portlets.widgets</groupId>
<artifactId>metadata-profile-form-builder-widget</artifactId>
<packaging>jar</packaging>
<version>2.0.0</version>
<version>2.1.1</version>
<name>Metadata Profile Form Builder</name>
<description>
The Metadata Profile Form Builder is a widget able to build dynamically a web form by reading "gCube Metadata Profile/s"
@ -53,7 +53,7 @@
<dependency>
<groupId>org.gcube.distribution</groupId>
<artifactId>maven-portal-bom</artifactId>
<version>3.6.4</version>
<version>3.7.0</version>
<type>pom</type>
<scope>import</scope>
</dependency>

View File

@ -10,17 +10,6 @@ import com.google.gwt.user.client.rpc.AsyncCallback;
public interface MetadataProfileFormBuilderServiceAsync {
/**
* GWT-RPC service asynchronous (client-side) interface
*
* @see org.gcube.portlets.widgets.mpformbuilder.client.MetadataProfileFormBuilderService
*/
void getProfilesInTheScope(String scope, String genericResourceSecondaryType, AsyncCallback<List<MetaDataProfileBean>> callback);
void getProfileForMetadata(String metadata,
AsyncCallback<MetaDataProfileBean> callback);
/**
* Utility class to get the RPC Async interface from client-side code
*/
@ -39,6 +28,17 @@ public interface MetadataProfileFormBuilderServiceAsync {
}
}
/**
* GWT-RPC service asynchronous (client-side) interface
*
* @see org.gcube.portlets.widgets.mpformbuilder.client.MetadataProfileFormBuilderService
*/
void getProfilesInTheScope(String scope, String genericResourceSecondaryType,
AsyncCallback<List<MetaDataProfileBean>> callback);
void getProfileForMetadata(String metadata, AsyncCallback<MetaDataProfileBean> callback);
void getUploadStatus(String clientUploadKey, AsyncCallback<FileUploadingState> asyncCallback);
void purgeFilesUploaded(AsyncCallback<Integer> callback);

View File

@ -1,33 +0,0 @@
package org.gcube.portlets.widgets.mpformbuilder.client.events;
import org.gcube.portlets.widgets.mpformbuilder.shared.catalogue.ResourceElementBean;
import com.google.gwt.event.shared.GwtEvent;
/**
* Added resource event
* @author Costantino Perciante at ISTI-CNR (costantino.perciante@isti.cnr.it)
*/
public class AddResourceEvent extends GwtEvent<AddResourceEventHandler> {
public static Type<AddResourceEventHandler> TYPE = new Type<AddResourceEventHandler>();
private ResourceElementBean resource;
public AddResourceEvent(ResourceElementBean resource) {
this.resource = resource;
}
public ResourceElementBean getResource() {
return resource;
}
@Override
public Type<AddResourceEventHandler> getAssociatedType() {
return TYPE;
}
@Override
protected void dispatch(AddResourceEventHandler handler) {
handler.onAddedResource(this);
}
}

View File

@ -1,11 +0,0 @@
package org.gcube.portlets.widgets.mpformbuilder.client.events;
import com.google.gwt.event.shared.EventHandler;
/**
* Added resource handler interface
* @author Costantino Perciante at ISTI-CNR (costantino.perciante@isti.cnr.it)
*/
public interface AddResourceEventHandler extends EventHandler {
void onAddedResource(AddResourceEvent addResourceEvent);
}

View File

@ -0,0 +1,33 @@
package org.gcube.portlets.widgets.mpformbuilder.client.events;
import org.gcube.portlets.widgets.mpformbuilder.shared.catalogue.ResourceElementBeanProfile;
import com.google.gwt.event.shared.GwtEvent;
/**
* Added resource event
* @author Costantino Perciante at ISTI-CNR (costantino.perciante@isti.cnr.it)
*/
public class AddResourceEventProfile extends GwtEvent<AddResourceEventProfileHandler> {
public static Type<AddResourceEventProfileHandler> TYPE = new Type<AddResourceEventProfileHandler>();
private ResourceElementBeanProfile resource;
public AddResourceEventProfile(ResourceElementBeanProfile resource) {
this.resource = resource;
}
public ResourceElementBeanProfile getResource() {
return resource;
}
@Override
public Type<AddResourceEventProfileHandler> getAssociatedType() {
return TYPE;
}
@Override
protected void dispatch(AddResourceEventProfileHandler handler) {
handler.onAddedResource(this);
}
}

View File

@ -0,0 +1,21 @@
package org.gcube.portlets.widgets.mpformbuilder.client.events;
import com.google.gwt.event.shared.EventHandler;
/**
* The Interface AddResourceEventProfileHandler.
*
* @author Francesco Mangiacrapa at ISTI-CNR francesco.mangiacrapa@isti.cnr.it
*
* Feb 12, 2024
*/
public interface AddResourceEventProfileHandler extends EventHandler {
/**
* On added resource.
*
* @param addResourceEvent the add resource event
*/
void onAddedResource(AddResourceEventProfile addResourceEvent);
}

View File

@ -1,27 +0,0 @@
package org.gcube.portlets.widgets.mpformbuilder.client.events;
import com.google.gwt.event.shared.GwtEvent;
/**
* Called on close form.
* @author Costantino Perciante at ISTI-CNR (costantino.perciante@isti.cnr.it)
*/
public class CloseCreationFormEvent extends GwtEvent<CloseCreationFormEventHandler>{
public static Type<CloseCreationFormEventHandler> TYPE = new Type<CloseCreationFormEventHandler>();
public CloseCreationFormEvent() {
super();
}
@Override
public Type<CloseCreationFormEventHandler> getAssociatedType() {
return TYPE;
}
@Override
protected void dispatch(CloseCreationFormEventHandler handler) {
handler.onClose(this);
}
}

View File

@ -1,13 +0,0 @@
package org.gcube.portlets.widgets.mpformbuilder.client.events;
import com.google.gwt.event.shared.EventHandler;
/**
* Close event handler interface
* @author Costantino Perciante at ISTI-CNR
* (costantino.perciante@isti.cnr.it)
*
*/
public interface CloseCreationFormEventHandler extends EventHandler {
void onClose(CloseCreationFormEvent event);
}

View File

@ -0,0 +1,44 @@
package org.gcube.portlets.widgets.mpformbuilder.client.events;
import com.google.gwt.event.shared.GwtEvent;
/**
* The Class CloseCreationFormProfileEvent.
*
* @author Francesco Mangiacrapa at ISTI-CNR francesco.mangiacrapa@isti.cnr.it
*
* Feb 12, 2024
*/
public class CloseCreationFormProfileEvent extends GwtEvent<CloseCreationFormProfileEventHandler>{
public static Type<CloseCreationFormProfileEventHandler> TYPE = new Type<CloseCreationFormProfileEventHandler>();
/**
* Instantiates a new close creation form profile event.
*/
public CloseCreationFormProfileEvent() {
super();
}
/**
* Gets the associated type.
*
* @return the associated type
*/
@Override
public Type<CloseCreationFormProfileEventHandler> getAssociatedType() {
return TYPE;
}
/**
* Dispatch.
*
* @param handler the handler
*/
@Override
protected void dispatch(CloseCreationFormProfileEventHandler handler) {
handler.onClose(this);
}
}

View File

@ -0,0 +1,20 @@
package org.gcube.portlets.widgets.mpformbuilder.client.events;
import com.google.gwt.event.shared.EventHandler;
/**
* The Interface CloseCreationFormProfileEventHandler.
*
* @author Francesco Mangiacrapa at ISTI-CNR francesco.mangiacrapa@isti.cnr.it
*
* Feb 12, 2024
*/
public interface CloseCreationFormProfileEventHandler extends EventHandler {
/**
* On close.
*
* @param event the event
*/
void onClose(CloseCreationFormProfileEvent event);
}

View File

@ -1,32 +0,0 @@
package org.gcube.portlets.widgets.mpformbuilder.client.events;
import org.gcube.portlets.widgets.mpformbuilder.client.ui.metadata.CustomFieldEntry;
import com.google.gwt.event.shared.GwtEvent;
/**
* Delete custom field event.
* @author Costantino Perciante at ISTI-CNR (costantino.perciante@isti.cnr.it)
*/
public class DeleteCustomFieldEvent extends GwtEvent<DeleteCustomFieldEventHandler> {
public static Type<DeleteCustomFieldEventHandler> TYPE = new Type<DeleteCustomFieldEventHandler>();
private CustomFieldEntry removedEntry;
public DeleteCustomFieldEvent(CustomFieldEntry removedEntry) {
this.removedEntry = removedEntry;
}
public CustomFieldEntry getRemovedEntry() {
return removedEntry;
}
@Override
public Type<DeleteCustomFieldEventHandler> getAssociatedType() {
return TYPE;
}
@Override
protected void dispatch(DeleteCustomFieldEventHandler handler) {
handler.onRemoveEntry(this);
}
}

View File

@ -0,0 +1,32 @@
package org.gcube.portlets.widgets.mpformbuilder.client.events;
import org.gcube.portlets.widgets.mpformbuilder.client.ui.metadata.CustomFieldEntryProfile;
import com.google.gwt.event.shared.GwtEvent;
/**
* Delete custom field event.
* @author Costantino Perciante at ISTI-CNR (costantino.perciante@isti.cnr.it)
*/
public class DeleteCustomFieldProfileEvent extends GwtEvent<DeleteCustomFieldProfileEventHandler> {
public static Type<DeleteCustomFieldProfileEventHandler> TYPE = new Type<DeleteCustomFieldProfileEventHandler>();
private CustomFieldEntryProfile removedEntry;
public DeleteCustomFieldProfileEvent(CustomFieldEntryProfile removedEntry) {
this.removedEntry = removedEntry;
}
public CustomFieldEntryProfile getRemovedEntry() {
return removedEntry;
}
@Override
public Type<DeleteCustomFieldProfileEventHandler> getAssociatedType() {
return TYPE;
}
@Override
protected void dispatch(DeleteCustomFieldProfileEventHandler handler) {
handler.onRemoveEntry(this);
}
}

View File

@ -3,9 +3,9 @@ package org.gcube.portlets.widgets.mpformbuilder.client.events;
import com.google.gwt.event.shared.EventHandler;
/**
* Handler associated to the DeleteCustomFieldEvent
* Handler associated to the DeleteCustomFieldProfileEvent
* @author Costantino Perciante at ISTI-CNR (costantino.perciante@isti.cnr.it)
*/
public interface DeleteCustomFieldEventHandler extends EventHandler {
void onRemoveEntry(DeleteCustomFieldEvent event);
public interface DeleteCustomFieldProfileEventHandler extends EventHandler {
void onRemoveEntry(DeleteCustomFieldProfileEvent event);
}

View File

@ -1,34 +0,0 @@
package org.gcube.portlets.widgets.mpformbuilder.client.events;
import org.gcube.portlets.widgets.mpformbuilder.shared.catalogue.ResourceElementBean;
import com.google.gwt.event.shared.GwtEvent;
/**
* Deleted resource event.
* @author Costantino Perciante at ISTI-CNR (costantino.perciante@isti.cnr.it)
*/
public class DeleteResourceEvent extends GwtEvent<DeleteResourceEventHandler> {
public static Type<DeleteResourceEventHandler> TYPE = new Type<DeleteResourceEventHandler>();
private ResourceElementBean resource;
public DeleteResourceEvent(ResourceElementBean resource) {
this.resource = resource;
}
public ResourceElementBean getResource() {
return resource;
}
@Override
public Type<DeleteResourceEventHandler> getAssociatedType() {
return TYPE;
}
@Override
protected void dispatch(DeleteResourceEventHandler handler) {
handler.onDeletedResource(this);
}
}

View File

@ -0,0 +1,34 @@
package org.gcube.portlets.widgets.mpformbuilder.client.events;
import org.gcube.portlets.widgets.mpformbuilder.shared.catalogue.ResourceElementBeanProfile;
import com.google.gwt.event.shared.GwtEvent;
/**
* Deleted resource event.
* @author Costantino Perciante at ISTI-CNR (costantino.perciante@isti.cnr.it)
*/
public class DeleteResourceProfileEvent extends GwtEvent<DeleteResourceProfileEventHandler> {
public static Type<DeleteResourceProfileEventHandler> TYPE = new Type<DeleteResourceProfileEventHandler>();
private ResourceElementBeanProfile resource;
public DeleteResourceProfileEvent(ResourceElementBeanProfile resource) {
this.resource = resource;
}
public ResourceElementBeanProfile getResource() {
return resource;
}
@Override
public Type<DeleteResourceProfileEventHandler> getAssociatedType() {
return TYPE;
}
@Override
protected void dispatch(DeleteResourceProfileEventHandler handler) {
handler.onDeletedResource(this);
}
}

View File

@ -6,6 +6,6 @@ import com.google.gwt.event.shared.EventHandler;
* The delete event handler
* @author Costantino Perciante at ISTI-CNR (costantino.perciante@isti.cnr.it)
*/
public interface DeleteResourceEventHandler extends EventHandler{
void onDeletedResource(DeleteResourceEvent deleteResourceEvent);
public interface DeleteResourceProfileEventHandler extends EventHandler{
void onDeletedResource(DeleteResourceProfileEvent deleteResourceEvent);
}

View File

@ -1,410 +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.widgets.ckandatapublisherwidget.client.ui.tags">
<ui:style>
.form-main-style {
margin-left: 10px !important;
}
.fieldset-border-style {
border: 1px groove #444 !important;
-webkit-box-shadow: 0px 0px 0px 0px #000;
box-shadow: 0px 0px 0px 0px #000 !important;
padding: 10px !important;
}
.legend-style {
width: auto !important;
padding: 10px !important;
margin-bottom: 0px !important;
}
@external .form-horizontal .input-large;
.form-horizontal .input-large .input-prepend {
width: 95%;
}
.block-alert-style {
margin-top: 10px;
padding: 10px;
margin-bottom: 10px;
}
.tagsPanelStyle {
display: inline-block;
}
.selected-profile {
font-weight: bold;
}
.label-go-to-product {
display: inline-block;
vertical-align: middle;
font-weight: bold;
}
.the-margin-left{
margin-left: 5px;
}
</ui:style>
<g:HTMLPanel ui:field="createDatasetMainPanel">
<b:Form type="HORIZONTAL" styleName="{style.form-main-style}"
ui:field="formFirstStep" visible="true">
<b:Fieldset styleName="{style.fieldset-border-style}">
<b:Legend styleName="{style.legend-style}">
Insert Item Information
<small>
<span style="color:red;">*</span>
is required
</small>
</b:Legend>
<!-- Alert blocks for info/errors -->
<b:AlertBlock type="INFO" close="false" animation="true"
visible="false" ui:field="infoBlock" styleName="{style.block-alert-style}"></b:AlertBlock>
<b:ControlGroup ui:field="productTitleGroup">
<b:ControlLabel for="title" title="Item title">
<font color="red">*</font>
Title :
</b:ControlLabel>
<b:Controls>
<b:TextBox alternateSize="LARGE" placeholder="Item title"
width="90%" b:id="title" title="Item title" ui:field="titleTextBox" />
<span style="float:right; width:5%; color: #aaaaaa;">
<b:Popover ui:field="popoverTitle" html="true"
animation="true" placement="LEFT">
<g:FocusPanel ui:field="focusPanelTitle">
<b:Icon type="INFO_SIGN" size="TWO_TIMES" ui:field="infoIconTitle" />
</g:FocusPanel>
</b:Popover>
</span>
</b:Controls>
</b:ControlGroup>
<b:ControlGroup>
<b:ControlLabel for="description" title="Item description">
Description:
</b:ControlLabel>
<b:Controls>
<b:TextArea placeholder="eg. Some useful notes about the item"
width="90%" alternateSize="LARGE" b:id="description" title="Item description"
ui:field="descriptionTextarea"></b:TextArea>
<span style="float:right; width:5%; color: #aaaaaa;">
<b:Popover ui:field="popoverDescription" html="true"
animation="true" placement="LEFT">
<g:FocusPanel ui:field="focusPanelDescription">
<b:Icon type="INFO_SIGN" size="TWO_TIMES" ui:field="infoIconDescription" />
</g:FocusPanel>
</b:Popover>
</span>
</b:Controls>
</b:ControlGroup>
<!-- TAGS Panel -->
<m:TagsPanel ui:field="tagsPanel"></m:TagsPanel>
<b:ControlGroup>
<b:ControlLabel for="licenses" title="License">License:</b:ControlLabel>
<b:Controls>
<b:ListBox b:id="licenses" title="Item license"
width="91%" ui:field="licenseListbox">
</b:ListBox>
<span style="float:right; width:5%; color: #aaaaaa;">
<b:Popover ui:field="popoverLicenses" html="true"
animation="true" placement="LEFT">
<g:FocusPanel ui:field="focusPanelLicenses">
<b:Icon type="INFO_SIGN" size="TWO_TIMES" ui:field="infoIconLicenses" />
</g:FocusPanel>
</b:Popover>
</span>
</b:Controls>
</b:ControlGroup>
<b:ControlGroup>
<b:ControlLabel for="licenseUrl" title="Selected License'url">Selected
License Url:</b:ControlLabel>
<b:Controls>
<b:Paragraph ui:field="unavailableUrl" visible="true">
<b>Unavailable</b>
</b:Paragraph>
<g:Anchor ui:field="licenseUrlAnchor" target="_blank"
visible="false"></g:Anchor>
</b:Controls>
</b:ControlGroup>
<b:ControlGroup>
<b:ControlLabel for="visibility" title="Visibility of the item">Visibility:</b:ControlLabel>
<b:Controls>
<b:ListBox b:id="visibility" title="Item visibility"
width="91%" ui:field="visibilityListbox">
<g:item title="restricted">Restricted</g:item>
<g:item enabled="true" title="public">Public</g:item>
</b:ListBox>
<span style="float:right; width:5%; color: #aaaaaa;">
<b:Popover ui:field="popoverVisibility" html="true"
animation="true" placement="LEFT">
<g:FocusPanel ui:field="focusPanelVisibility">
<b:Icon type="INFO_SIGN" size="TWO_TIMES" ui:field="infoIconVisibility" />
</g:FocusPanel>
</b:Popover>
</span>
</b:Controls>
</b:ControlGroup>
<b:ControlGroup ui:field="organizationsGroup">
<b:ControlLabel for="organization"
title="Select the organizations in which you want
to publish the item">Publish in:</b:ControlLabel>
<b:Controls>
<b:ListBox b:id="organization" alternateSize="LARGE"
width="91%" title="Publish in this organization" ui:field="organizationsListbox">
</b:ListBox>
</b:Controls>
</b:ControlGroup>
<b:ControlGroup ui:field="versionControlGroup">
<b:ControlLabel for="version"
title="Item version expressed as positive integer number">
Version:
</b:ControlLabel>
<b:Controls>
<b:TextBox alternateSize="LARGE" placeholder="1.0" b:id="version"
width="90%" title="Item version" ui:field="versionTextbox" />
</b:Controls>
</b:ControlGroup>
<b:ControlGroup>
<b:ControlLabel for="author" title="Item author">
<font color="red">*</font>
Author:
</b:ControlLabel>
<b:Controls>
<b:TextBox alternateSize="LARGE" width="90%"
placeholder="Joe Bloggs" enabled="false" b:id="author" title="Item author"
ui:field="authorTextbox" />
<span style="float:right; width:5%; color: #aaaaaa;">
<b:Popover ui:field="popoverAuthor" html="true"
animation="true" placement="LEFT">
<g:FocusPanel ui:field="focusPanelAuthor">
<b:Icon type="INFO_SIGN" size="TWO_TIMES" ui:field="infoIconAuthor" />
</g:FocusPanel>
</b:Popover>
</span>
</b:Controls>
</b:ControlGroup>
<b:ControlGroup ui:field="authorEmailControlGroup">
<b:ControlLabel for="email" title="Item author's email">
<font color="red">*</font>
Author Email:
</b:ControlLabel>
<b:Controls>
<b:TextBox alternateSize="LARGE" width="90%"
placeholder="joe.bloggs@example.com" enabled="false" b:id="email"
title="Item author" ui:field="authorEmailTextbox" />
<span style="float:right; width:5%; color: #aaaaaa;">
<b:Popover ui:field="popoverAuthorEmail" html="true"
animation="true" placement="LEFT">
<g:FocusPanel ui:field="focusPanelAuthorEmail">
<b:Icon type="INFO_SIGN" size="TWO_TIMES" ui:field="infoIconAuthorEmail" />
</g:FocusPanel>
</b:Popover>
</span>
</b:Controls>
</b:ControlGroup>
<b:ControlGroup>
<b:ControlLabel for="maintainer" title="Item maintainer">
Maintainer:
</b:ControlLabel>
<b:Controls>
<b:TextBox alternateSize="LARGE" placeholder="Joe Bloggs"
width="90%" b:id="maintainer" title="Item maintainer"
ui:field="maintainerTextbox" />
<span style="float:right; width:5%; color: #aaaaaa;">
<b:Popover ui:field="popoverMaintainer" html="true"
animation="true" placement="LEFT">
<g:FocusPanel ui:field="focusPanelMaintainer">
<b:Icon type="INFO_SIGN" size="TWO_TIMES" ui:field="infoIconMaintainer" />
</g:FocusPanel>
</b:Popover>
</span>
</b:Controls>
</b:ControlGroup>
<b:ControlGroup ui:field="maintainerControlGroup">
<b:ControlLabel for="emailMaintaner" title="Item author's email">
Maintainer Email:
</b:ControlLabel>
<b:Controls>
<b:TextBox alternateSize="LARGE" placeholder="maintainer@example.com"
width="90%" b:id="emailMaintaner" title="Item author"
ui:field="maintainerEmailTextbox" />
<span style="float:right; width:5%; color: #aaaaaa;">
<b:Popover ui:field="popoverMaintainerEmail" html="true"
animation="true" placement="LEFT">
<g:FocusPanel ui:field="focusPanelMaintainerEmail">
<b:Icon type="INFO_SIGN" size="TWO_TIMES" ui:field="infoIconMaintainerEmail" />
</g:FocusPanel>
</b:Popover>
</span>
</b:Controls>
</b:ControlGroup>
<b:ControlGroup ui:field="metadataTypesControlGroup">
<b:ControlLabel for="metadataTypes" title="Item profile types">Types:</b:ControlLabel>
<b:Controls>
<b:ListBox b:id="metadataTypes" alternateSize="LARGE"
width="91%" title="The item type to be used"
ui:field="metadataTypeListbox">
<g:item enabled="true" title="None">none</g:item>
</b:ListBox>
<span style="float:right; width:5%; color: #aaaaaa;">
<b:Popover ui:field="popoverTypes" html="true"
animation="true" placement="LEFT">
<g:FocusPanel ui:field="focusPanelTypes">
<b:Icon type="INFO_SIGN" size="TWO_TIMES" ui:field="infoIconTypes" />
</g:FocusPanel>
</b:Popover>
</span>
</b:Controls>
</b:ControlGroup>
<b:ControlGroup ui:field="groupsControlGroup"
visible="false">
<b:ControlLabel for="groups" title="The groups for this item">Item Groups:</b:ControlLabel>
<b:Controls>
<b:ListBox b:id="groups" alternateSize="LARGE" width="91%"
multipleSelect="true"
title="The groups for this item (Hold CTRL or Command button for multiple selection)"
ui:field="groupsListbox">
</b:ListBox>
<span style="float:right; width:5%; color: #aaaaaa;">
<b:Popover ui:field="popoverGroups" html="true"
animation="true" placement="LEFT">
<g:FocusPanel ui:field="focusPanelGroups">
<b:Icon type="INFO_SIGN" size="TWO_TIMES" ui:field="infoIconGroups" />
</g:FocusPanel>
</b:Popover>
</span>
</b:Controls>
</b:ControlGroup>
<!-- Alert block on continue -->
<b:AlertBlock animation="true" visible="false"
ui:field="alertNoResources"
text="Please note that the item you are going to publish will not have resources.">
</b:AlertBlock>
<!-- Alert block on continue -->
<b:AlertBlock type="INFO" close="false" animation="true"
visible="false" ui:field="onContinueAlertBlock">
</b:AlertBlock>
<b:Button title="Continue" ui:field="continueButton" type="PRIMARY"
block="true">Continue</b:Button>
<b:Button title="Reset" ui:field="resetButton" block="true">Reset</b:Button>
</b:Fieldset>
</b:Form>
<b:Form type="HORIZONTAL" styleName="{style.form-main-style}"
ui:field="formSecondStep" visible="false">
<b:Fieldset styleName="{style.fieldset-border-style}">
<b:Legend styleName="{style.legend-style}">
Manage Resources
</b:Legend>
<b:ControlGroup>
<b:Controls>
<span style="float:right; width:5%; color: #aaaaaa;">
<b:Popover ui:field="popoverResources" html="true"
animation="true" placement="LEFT">
<g:FocusPanel ui:field="focusPanelResources">
<b:Icon type="INFO_SIGN" size="TWO_TIMES" ui:field="infoIconResources" />
</g:FocusPanel>
</b:Popover>
</span>
</b:Controls>
</b:ControlGroup>
<g:SimplePanel ui:field="workspaceResourcesContainer"
width="100%" visible="true">
</g:SimplePanel>
<b:Button title="Continue" ui:field="continueThirdStep"
type="PRIMARY" block="true">Continue</b:Button>
<b:Button title="Go Back" ui:field="goBackButtonFirstStep"
block="true">Go
Back</b:Button>
</b:Fieldset>
</b:Form>
<b:Form type="HORIZONTAL" styleName="{style.form-main-style}"
ui:field="formThirdStep" visible="false">
<b:Fieldset styleName="{style.fieldset-border-style}">
<b:Legend styleName="{style.legend-style}">
Insert Item Profile Information
<small>
<span style="color:red;">*</span>
is required
</small>
</b:Legend>
<b:Paragraph ui:field="selectedProfile" styleName="{style.selected-profile}"></b:Paragraph>
<!-- Here will be placed the metadata fields formats -->
<g:VerticalPanel ui:field="metadataFieldsPanel"
visible="false" width="100%"></g:VerticalPanel>
<!-- Custom fields can be dinamically added -->
<b:ControlGroup ui:field="customFields">
<b:ControlLabel>Custom Field(s):</b:ControlLabel>
</b:ControlGroup>
<b:ControlGroup>
<b:Controls>
<span style="float:right; width:5%; color: #aaaaaa;">
<b:Popover ui:field="popoverCustomFields" html="true"
animation="true" placement="LEFT">
<g:FocusPanel ui:field="focusPanelCustomFields">
<b:Icon type="INFO_SIGN" size="TWO_TIMES" ui:field="infoIconCustomFields" />
</g:FocusPanel>
</b:Popover>
</span>
<b:Button icon="PLUS_SIGN" title="Add Custom Field"
ui:field="addCustomFieldButton"></b:Button>
</b:Controls>
</b:ControlGroup>
<!-- Alert block on create -->
<b:AlertBlock type="INFO" close="false" animation="true"
visible="false" ui:field="onCreateAlertBlock" styleName="{style.block-alert-style}">
</b:AlertBlock>
<g:HorizontalPanel ui:field="goToDatasetButtonPanel" visible="false">
<g:Label>Go to the Item</g:Label>
<b:Button title="Go to the Item" ui:field="goToDatasetButton"
type="LINK" visible="false" styleName="{style.the-margin-left}"></b:Button>
</g:HorizontalPanel>
<b:Button title="Add resources to the just created item"
block="true" type="PRIMARY" visible="false" ui:field="addResourcesButton">Add Resources</b:Button>
<b:Button title="Create Item" ui:field="createButton"
type="PRIMARY" block="true">Create</b:Button>
<b:Button title="Go Back" ui:field="goBackButtonSecondStep"
block="true">Go
Back</b:Button>
</b:Fieldset>
</b:Form>
</g:HTMLPanel>
</ui:UiBinder>

View File

@ -59,10 +59,6 @@
<b:Fieldset styleName="{style.fieldset-border-style}">
<b:Legend styleName="{style.legend-style}">
Choose a Profile
<!-- <small> -->
<!-- <span style="color:red;">*</span> -->
<!-- is required -->
<!-- </small> -->
</b:Legend>
<!-- Alert blocks for info/errors -->
@ -91,18 +87,11 @@
</b:Controls>
</b:ControlGroup>
<!-- TAGS Panel -->
<!-- <m:TagsPanel ui:field="tagsPanel"></m:TagsPanel> -->
<!-- Alert block on continue -->
<b:AlertBlock type="INFO" close="false"
animation="true" visible="false" ui:field="onContinueAlertBlock">
</b:AlertBlock>
<!-- <b:Button title="Continue" ui:field="continueButton" type="PRIMARY" -->
<!-- block="true">Continue</b:Button> -->
<!-- <b:Button title="Reset" ui:field="resetButton" block="true">Reset</b:Button> -->
</b:Fieldset>
</b:Form>
@ -112,14 +101,6 @@
<b:Form type="HORIZONTAL" styleName="{style.form-main-style}"
ui:field="formThirdStep" visible="false">
<b:Fieldset styleName="{style.fieldset-border-style}">
<!-- <b:Legend styleName="{style.legend-style}" -->
<!-- ui:field="legendInsertInformation"> -->
<!-- Insert Information -->
<!-- <small> -->
<!-- <span style="color:red;">*</span> -->
<!-- is required -->
<!-- </small> -->
<!-- </b:Legend> -->
<u:CustomLegend ui:field="customLegend">
Insert Information
@ -135,6 +116,9 @@
<!-- Here will be placed the metadata fields formats -->
<g:VerticalPanel ui:field="metadataFieldsPanel"
visible="false" width="100%"></g:VerticalPanel>
<g:VerticalPanel ui:field="filesUploadedPanel"
visible="false" width="100%"></g:VerticalPanel>
<!-- Custom fields can be dinamically added -->
<b:ControlGroup ui:field="customFields"
@ -165,27 +149,12 @@
styleName="{style.block-alert-style}">
</b:AlertBlock>
<!-- <g:HorizontalPanel ui:field="goToDatasetButtonPanel" visible="false"> -->
<!-- <g:Label>Go to the Item</g:Label> -->
<!-- <b:Button title="Go to the Item" ui:field="goToDatasetButton" -->
<!-- type="LINK" visible="false" styleName="{style.the-margin-left}"></b:Button> -->
<!-- </g:HorizontalPanel> -->
<!-- <b:Button title="Add resources to the just created item" -->
<!-- block="true" type="PRIMARY" visible="false" ui:field="addResourcesButton">Add
Resources</b:Button> -->
<b:Button title="Create Item" ui:field="createButton"
type="PRIMARY" block="true">Create</b:Button>
<b:Button title="Edit Item" ui:field="editButton"
type="PRIMARY" block="true" visible="false">Edit</b:Button>
<!-- <b:Button title="Go Back" ui:field="goBackButtonSecondStep" -->
<!-- block="true">Go -->
<!-- Back</b:Button> -->
</b:Fieldset>
</b:Form>
</g:HTMLPanel>

View File

@ -0,0 +1,130 @@
package org.gcube.portlets.widgets.mpformbuilder.client.form.generic;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import org.gcube.portlets.widgets.mpformbuilder.shared.upload.FileUploaded;
import org.gcube.portlets.widgets.mpformbuilder.shared.upload.FileUploadedRemote;
import com.github.gwtbootstrap.client.ui.Button;
import com.github.gwtbootstrap.client.ui.constants.IconType;
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.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.FlexTable;
import com.google.gwt.user.client.ui.HTMLPanel;
import com.google.gwt.user.client.ui.Widget;
public class UploadedFilesBrowse<T extends FileUploaded> extends Composite {
private static UploadedFilesBrowseUiBinder uiBinder = GWT.create(UploadedFilesBrowseUiBinder.class);
interface UploadedFilesBrowseUiBinder extends UiBinder<Widget, UploadedFilesBrowse> {
}
private List<T> listFileUploaded;
@UiField
HTMLPanel uploadFileContainer;
private FlexTable table = new FlexTable();
private List<Button> listButtonRemove = new ArrayList<Button>();
private HashMap<Integer, T> mapPositionalFU = new HashMap<Integer, T>();
public UploadedFilesBrowse(List<T> fileUploaded) {
initWidget(uiBinder.createAndBindUi(this));
this.listFileUploaded = fileUploaded;
// Filling map of files uploaded
int i = 0;
for (T file : listFileUploaded) {
mapPositionalFU.put(i, file);
i++;
}
showFileBrowseInteraction();
}
private void showFileBrowseInteraction() {
uploadFileContainer.clear();
// pathIndex = pathContentIndex;
// GWT.log("showing pathContentIndex: "+pathContentIndex);
GWT.log("showing files: " + listFileUploaded);
table.clear();
if (listFileUploaded.size() > 0) {
table.addStyleName("table-current-content");
table.setHTML(0, 0, "<span style='color:rgb(155, 80, 78); font-weight:bold;'>Current content:</span>");
table.setHTML(1, 0, "<span style='color:rgb(155, 80, 78);'>Filename</span>");
table.setHTML(1, 1, "<span style='color:rgb(155, 80, 78);'>MimeType<span>");
table.setHTML(1, 2, "<span style='color:rgb(155, 80, 78);'>Field Label</span>");
table.setHTML(1, 3, "<span style='color:rgb(155, 80, 78);'>Link</span>");
int i = 2;
int index = 0;
for (final FileUploaded file : listFileUploaded) {
final int filePointer = index;
int columnIndex = 0;
table.setHTML(i, columnIndex, file.getFileName());
if (file instanceof FileUploadedRemote) {
FileUploadedRemote fur = (FileUploadedRemote) file;
table.setHTML(i, ++columnIndex, fur.getMimeType());
String fieldLabel = file.getFilePath().getFormFieldLabel();
table.setHTML(i, ++columnIndex, fieldLabel);
String link = "<a target=\"_blank\" href=" + fur.getUrl() + ">View</a>";
table.setHTML(i, ++columnIndex, link);
}
final int rowIndexToRem = i;
Button buttonRemoveFile = new Button();
buttonRemoveFile.setIcon(IconType.TRASH);
buttonRemoveFile.setTitle("Remove this file");
buttonRemoveFile.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
mapPositionalFU.remove(filePointer);
table.getRowFormatter().getElement(rowIndexToRem).setAttribute("hidden", "hidden");
}
});
listButtonRemove.add(buttonRemoveFile);
table.setWidget(i, ++columnIndex, buttonRemoveFile);
i++;
index++;
}
uploadFileContainer.add(table);
}
}
public void enableManageOfContent(boolean bool) {
for (Button button : listButtonRemove) {
button.setEnabled(bool);
}
double opacity = bool ? 1 : 0.8;
uploadFileContainer.getElement().getStyle().setOpacity(opacity);
}
public List<T> getListRemainingFileUploaded() {
Collection<T> collFileUplaoded = mapPositionalFU.values();
if (collFileUplaoded != null)
return new ArrayList<T>(collFileUplaoded);
return null;
}
}

View File

@ -0,0 +1,20 @@
<!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;
}
.padding-panel {
padding-left: 30px;
padding-right: 30px;
padding-bottom: 30px;
}
</ui:style>
<g:HTMLPanel>
<g:HTMLPanel ui:field="uploadFileContainer"
addStyleNames="{style.padding-panel}"></g:HTMLPanel>
</g:HTMLPanel>
</ui:UiBinder>

View File

@ -1,6 +1,6 @@
package org.gcube.portlets.widgets.mpformbuilder.client.ui.metadata;
import org.gcube.portlets.widgets.mpformbuilder.client.events.DeleteCustomFieldEvent;
import org.gcube.portlets.widgets.mpformbuilder.client.events.DeleteCustomFieldProfileEvent;
import com.github.gwtbootstrap.client.ui.Button;
import com.github.gwtbootstrap.client.ui.InputAddOn;
@ -18,13 +18,13 @@ import com.google.gwt.user.client.ui.Widget;
* A custom field entry that has two textboxes, one for the key value and the other for the value.
* @author Costantino Perciante at ISTI-CNR (costantino.perciante@isti.cnr.it)
*/
public class CustomFieldEntry extends Composite {
public class CustomFieldEntryProfile extends Composite {
private static CustomFieldEntryUiBinder uiBinder = GWT
.create(CustomFieldEntryUiBinder.class);
interface CustomFieldEntryUiBinder extends
UiBinder<Widget, CustomFieldEntry> {
UiBinder<Widget, CustomFieldEntryProfile> {
}
@UiField InputAddOn keyFieldPrepend;
@ -39,7 +39,7 @@ public class CustomFieldEntry extends Composite {
// event bus
private HandlerManager eventBus;
public CustomFieldEntry(HandlerManager eventBus, String key, String value, boolean isCustomCreatedByUser) {
public CustomFieldEntryProfile(HandlerManager eventBus, String key, String value, boolean isCustomCreatedByUser) {
initWidget(uiBinder.createAndBindUi(this));
// save information
@ -91,7 +91,7 @@ public class CustomFieldEntry extends Composite {
void onRemoveCustomField(ClickEvent e){
// fire event
eventBus.fireEvent(new DeleteCustomFieldEvent(this));
eventBus.fireEvent(new DeleteCustomFieldProfileEvent(this));
}

View File

@ -3,8 +3,8 @@ package org.gcube.portlets.widgets.mpformbuilder.client.ui.metadata;
import java.util.ArrayList;
import java.util.List;
import org.gcube.portlets.widgets.mpformbuilder.client.events.CloseCreationFormEvent;
import org.gcube.portlets.widgets.mpformbuilder.client.events.CloseCreationFormEventHandler;
import org.gcube.portlets.widgets.mpformbuilder.client.events.CloseCreationFormProfileEvent;
import org.gcube.portlets.widgets.mpformbuilder.client.events.CloseCreationFormProfileEventHandler;
import org.gcube.portlets.widgets.mpformbuilder.client.form.generic.CreateMetadataForm.OPERATION;
import org.gcube.portlets.widgets.mpformbuilder.client.openlayerwidget.GeoJsonAreaSelectionDialog;
import org.gcube.portlets.widgets.mpformbuilder.client.ui.timeandranges.DataTimeBox;
@ -149,7 +149,7 @@ public class MetaDataFieldSkeleton extends Composite {
if (operation.equals(OPERATION.UPDATE)) {
try {
if (field.getCurrentValue() != null)
if (field.getCurrentSingleValue() != null)
((CheckBox) holder).setValue(Boolean.valueOf(field.getDefaultValue()));
} catch (Exception e) {
// TODO: handle exception
@ -171,8 +171,8 @@ public class MetaDataFieldSkeleton extends Composite {
if (operation.equals(OPERATION.UPDATE)) {
try {
if (field.getCurrentValue() != null)
textArea.setText((String) field.getCurrentValue());
if (field.getCurrentSingleValue() != null)
textArea.setText((String) field.getCurrentSingleValue());
} catch (Exception e) {
// TODO: handle exception
}
@ -243,8 +243,8 @@ public class MetaDataFieldSkeleton extends Composite {
if (operation.equals(OPERATION.UPDATE)) {
try {
if (field.getCurrentValue() != null)
((TextArea) holder).setText((String) field.getCurrentValue());
if (field.getCurrentSingleValue() != null)
((TextArea) holder).setText((String) field.getCurrentSingleValue());
} catch (Exception e) {
// TODO: handle exception
}
@ -268,8 +268,8 @@ public class MetaDataFieldSkeleton extends Composite {
if (operation.equals(OPERATION.UPDATE)) {
// set time, if present
try {
if (field.getCurrentValue() != null) {
String currentValue = (String) field.getCurrentValue();
if (field.getCurrentSingleValue() != null) {
String currentValue = (String) field.getCurrentSingleValue();
String[] dateAndTime = currentValue.split(" ");
if (dateAndTime.length > 0) {
ref.setStartDate(dateAndTime[0], dateAndTime.length > 1 ? dateAndTime[1] : null);
@ -290,7 +290,7 @@ public class MetaDataFieldSkeleton extends Composite {
if (operation.equals(OPERATION.UPDATE)) {
// set time, if present
try {
setRangeTimeInTimeBox((String) field.getCurrentValue(), rangeBox);
setRangeTimeInTimeBox((String) field.getCurrentSingleValue(), rangeBox);
} catch (Exception e) {
// TODO: handle exception
}
@ -313,7 +313,7 @@ public class MetaDataFieldSkeleton extends Composite {
if (operation.equals(OPERATION.UPDATE)) {
try {
setRangeTimeInTimeBox((String) field.getCurrentValue(), rangeBoxFirst);
setRangeTimeInTimeBox((String) field.getCurrentSingleValue(), rangeBoxFirst);
} catch (Exception e) {
// TODO: handle exception
}
@ -373,8 +373,8 @@ public class MetaDataFieldSkeleton extends Composite {
if (operation.equals(OPERATION.UPDATE)) {
try {
if (field.getCurrentValue() != null)
((TextBox) holder).setText((String) field.getCurrentValue());
if (field.getCurrentSingleValue() != null)
((TextBox) holder).setText((String) field.getCurrentSingleValue());
} catch (Exception e) {
// TODO: handle exception
}
@ -401,8 +401,8 @@ public class MetaDataFieldSkeleton extends Composite {
if (operation.equals(OPERATION.UPDATE)) {
try {
if (field.getCurrentValue() != null)
((TextBox) holder).setText((String) field.getCurrentValue());
if (field.getCurrentSingleValue() != null)
((TextBox) holder).setText((String) field.getCurrentSingleValue());
} catch (Exception e) {
// TODO: handle exception
}
@ -431,17 +431,31 @@ public class MetaDataFieldSkeleton extends Composite {
List<String> vocabulary = field.getVocabulary();
for (String term : vocabulary) {
tempListBox.addItem(term);
tempListBox.addItem(term, term);
}
// set default value
if (field.getDefaultValue() != null)
tempListBox.setSelectedValue(field.getDefaultValue());
//to be sure
tempListBox.setMultipleSelect(field.isMultiSelection());
if (operation.equals(OPERATION.UPDATE)) {
try {
if (field.getCurrentValue() != null)
tempListBox.setSelectedValue((String) field.getCurrentValue());
if (field.getCurrentValues() != null) {
if (field.isMultiSelection()) {
//Buggy in Bootstrap
for (String value : field.getCurrentValues()) {
GWT.log("Multiple Selecting: "+value);
tempListBox.setSelectedValue((String) value);
}
}else {
GWT.log("Selecting: "+field.getCurrentSingleValue());
tempListBox.setSelectedValue((String) field.getCurrentSingleValue());
}
}
} catch (Exception e) {
// TODO: handle exception
}
@ -532,10 +546,10 @@ public class MetaDataFieldSkeleton extends Composite {
private void bind() {
// on close form
eventBus.addHandler(CloseCreationFormEvent.TYPE, new CloseCreationFormEventHandler() {
eventBus.addHandler(CloseCreationFormProfileEvent.TYPE, new CloseCreationFormProfileEventHandler() {
@Override
public void onClose(CloseCreationFormEvent event) {
public void onClose(CloseCreationFormProfileEvent event) {
if (dialog != null)
dialog.hide();
@ -984,7 +998,7 @@ public class MetaDataFieldSkeleton extends Composite {
break;
case File:
GWT.log("here");
if (holder.getClass().equals(MultipleDilaogUpload.class) || holder.getClass().equals(DialogUpload.class)) {
DialogUpload dUpload = (DialogUpload) holder;
dUpload.enableUpload(!bool);

View File

@ -1,6 +1,6 @@
package org.gcube.portlets.widgets.mpformbuilder.client.ui.resources;
import com.github.gwtbootstrap.client.ui.TabPanel;
import com.github.gwtbootstrap.client.ui.base.StackedNav;
import com.google.gwt.core.client.GWT;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
@ -31,7 +31,7 @@ public class AddResourceContainer extends Composite{
* Add the form to this panel
* @param w
*/
public void add(TabPanel w){
public void add(StackedNav w){
resourcesPanel.add(w);
}
}

View File

@ -112,8 +112,8 @@ public class AddResourceToDataset extends Composite{
// collect data and build up the bean
/*//TODO MUST BE DONE IN ANOTHER POINT
*
* final ResourceElementBean resource =
new ResourceElementBean(
* final ResourceElementBeanProfile resource =
new ResourceElementBeanProfile(
resourceNameTextBox.getText(),
true,
false,
@ -130,14 +130,14 @@ public class AddResourceToDataset extends Composite{
addResourceButton.setEnabled(false);
// try to create
ckanServices.addResourceToDataset(resource, datasetId, new AsyncCallback<ResourceElementBean>() {
ckanServices.addResourceToDataset(resource, datasetId, new AsyncCallback<ResourceElementBeanProfile>() {
@Override
public void onSuccess(ResourceElementBean result) {
public void onSuccess(ResourceElementBeanProfile result) {
if(result != null){
showAlert("Resource created correctly", AlertType.SUCCESS);
eventBus.fireEvent(new AddResourceEvent(result));
eventBus.fireEvent(new AddResourceEventProfile(result));
// remove data
resourceUrlTextBox.setText("");

View File

@ -3,11 +3,11 @@ package org.gcube.portlets.widgets.mpformbuilder.client.ui.resources;
import java.util.ArrayList;
import java.util.List;
import org.gcube.portlets.widgets.mpformbuilder.client.events.AddResourceEvent;
import org.gcube.portlets.widgets.mpformbuilder.client.events.AddResourceEventHandler;
import org.gcube.portlets.widgets.mpformbuilder.client.events.DeleteResourceEvent;
import org.gcube.portlets.widgets.mpformbuilder.client.events.DeleteResourceEventHandler;
import org.gcube.portlets.widgets.mpformbuilder.shared.catalogue.ResourceElementBean;
import org.gcube.portlets.widgets.mpformbuilder.client.events.AddResourceEventProfile;
import org.gcube.portlets.widgets.mpformbuilder.client.events.AddResourceEventProfileHandler;
import org.gcube.portlets.widgets.mpformbuilder.client.events.DeleteResourceProfileEvent;
import org.gcube.portlets.widgets.mpformbuilder.client.events.DeleteResourceProfileEventHandler;
import org.gcube.portlets.widgets.mpformbuilder.shared.catalogue.ResourceElementBeanProfile;
import com.github.gwtbootstrap.client.ui.Accordion;
import com.github.gwtbootstrap.client.ui.AccordionGroup;
@ -19,6 +19,7 @@ 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.Window;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.VerticalPanel;
import com.google.gwt.user.client.ui.Widget;
@ -27,34 +28,31 @@ import com.google.gwt.user.client.ui.Widget;
* A summary of the resources added by the user.
* @author Costantino Perciante at ISTI-CNR (costantino.perciante@isti.cnr.it)
*/
public class AddedResourcesSummary extends Composite{
public class AddedResourcesSummaryProfile extends Composite{
private static AddedResourcesSummaryUiBinder uiBinder = GWT
.create(AddedResourcesSummaryUiBinder.class);
interface AddedResourcesSummaryUiBinder extends
UiBinder<Widget, AddedResourcesSummary> {
UiBinder<Widget, AddedResourcesSummaryProfile> {
}
// Event bus
private HandlerManager eventBus;
// list of added resources (beans)
List<ResourceElementBean> addedResources;
List<ResourceElementBeanProfile> addedResources;
@UiField VerticalPanel addResourcesPanel;
public AddedResourcesSummary(HandlerManager eventBus) {
public AddedResourcesSummaryProfile(HandlerManager eventBus) {
initWidget(uiBinder.createAndBindUi(this));
// save bus
this.eventBus = eventBus;
// bind on add resource event
bind();
// init list
addedResources = new ArrayList<ResourceElementBean>();
addedResources = new ArrayList<ResourceElementBeanProfile>();
}
/**
@ -63,13 +61,14 @@ public class AddedResourcesSummary extends Composite{
private void bind() {
// when a new resource is added
eventBus.addHandler(AddResourceEvent.TYPE, new AddResourceEventHandler() {
eventBus.addHandler(AddResourceEventProfile.TYPE, new AddResourceEventProfileHandler() {
@Override
public void onAddedResource(AddResourceEvent addResourceEvent) {
public void onAddedResource(AddResourceEventProfile addResourceEvent) {
GWT.log("Added resource event: "+addResourceEvent);
// get the resource
final ResourceElementBean justAddedResource = addResourceEvent.getResource();
final ResourceElementBeanProfile justAddedResource = addResourceEvent.getResource();
// Build an accordion to show resource info
Accordion accordion = new Accordion();
@ -91,7 +90,7 @@ public class AddedResourcesSummary extends Composite{
@Override
public void onClick(ClickEvent event) {
eventBus.fireEvent(new DeleteResourceEvent(justAddedResource));
eventBus.fireEvent(new DeleteResourceProfileEvent(justAddedResource));
}
});
@ -110,29 +109,24 @@ public class AddedResourcesSummary extends Composite{
});
// when the user wants to delete a resource
eventBus.addHandler(DeleteResourceEvent.TYPE, new DeleteResourceEventHandler() {
eventBus.addHandler(DeleteResourceProfileEvent.TYPE, new DeleteResourceProfileEventHandler() {
@Override
public void onDeletedResource(DeleteResourceEvent deleteResourceEvent) {
public void onDeletedResource(DeleteResourceProfileEvent deleteResourceEvent) {
// to delete
ResourceElementBean toDelete = deleteResourceEvent.getResource();
// find it
ResourceElementBeanProfile toDelete = deleteResourceEvent.getResource();
Window.alert("DELETE RESOURCE MUST BE IMPLEMENTED");
/*
* MUST ME MANAGED IN ANOTHER POINT
*
* for(int i = 0; i < addedResources.size(); i++){
for(int i = 0; i < addedResources.size(); i++){
if(addedResources.get(i).getOriginalIdInWorkspace().equals(toDelete.getOriginalIdInWorkspace())){
if(addedResources.get(i).equals(toDelete)){
// get the associated widget and remove it
final Widget widget = addResourcesPanel.getWidget(i);
// remote call to remove it from the dataset
ckanServices.deleteResourceFromDataset(toDelete, new AsyncCallback<Boolean>() {
MetadataProfileFormBuilderServiceAsync.Util.getInstance().deleteResourceFromDataset(toDelete, new AsyncCallback<Boolean>() {
@Override
public void onSuccess(Boolean result) {
@ -149,11 +143,15 @@ public class AddedResourcesSummary extends Composite{
break;
}
}*/
}
*/
// remove from the list
addedResources.remove(toDelete);
}
});
}
public HandlerManager getEventBus() {
return eventBus;
}
}

View File

@ -176,6 +176,12 @@ public class TagsPanel extends Composite{
if(tagsList.contains(tag))
return;
//selecting the item of the vocabulary
if(vocabulary!= null && vocabulary.size()>0) {
tagsEnterListBox.setSelectedValue(tag);
return;
}
// ckan accepts only alphanumeric values
String[] subTags = tag.trim().split(" ");

View File

@ -1,46 +0,0 @@
package org.gcube.portlets.widgets.mpformbuilder.client.ui.twincolumnselection;
import org.gcube.portlets.widgets.mpformbuilder.client.ui.icons.Images;
import org.gcube.portlets.widgets.mpformbuilder.shared.catalogue.ResourceElementBean;
import com.google.gwt.cell.client.AbstractCell;
import com.google.gwt.core.client.GWT;
import com.google.gwt.safehtml.shared.SafeHtmlBuilder;
import com.google.gwt.user.client.ui.Image;
/**
* Cell that renders left side panel objects
* @author Costantino Perciante at ISTI-CNR (costantino.perciante@isti.cnr.it)
*/
public class ResourceCellLeft extends AbstractCell<ResourceElementBean>{
private static final Images image = GWT.create(Images.class);
private static final String tipFile = "Hold down the Control (ctrl) or Command button to select multiple options";
private static final String tipFolder = "Click on the folder to navigate it";
@Override
public void render(com.google.gwt.cell.client.Cell.Context context,
ResourceElementBean value, SafeHtmlBuilder sb) {
if (value == null || value.isToBeAdded()) {
return;
}
Image file = new Image(image.fileIcon());
Image folder = new Image(image.folderIcon());
file.setWidth("15px");
file.setHeight("15px");
folder.setWidth("15px");
folder.setHeight("15px");
String whichTip = value.isFolder() ? tipFolder : tipFile;
sb.appendHtmlConstant("<div title='" + value.getName() + "( " + whichTip + " )" + "' style='overflow-x:hidden;white-space:nowrap;text-overflow:ellipsis;max-width:240px; min-height:30px; padding-top:5px;'>");
sb.appendHtmlConstant("<span style='margin-left:5px;'>");
sb.appendHtmlConstant(value.isFolder() ? folder.toString() : file.toString());
sb.appendHtmlConstant("</span>");
sb.appendHtmlConstant("<span style='margin-left:10px;'>");
sb.appendHtmlConstant("<b>");
sb.appendEscaped(value.getName());
sb.appendHtmlConstant("</b>");
sb.appendHtmlConstant("</span>");
sb.appendHtmlConstant("</div>");
}
}

View File

@ -1,65 +0,0 @@
package org.gcube.portlets.widgets.mpformbuilder.client.ui.twincolumnselection;
import org.gcube.portlets.widgets.mpformbuilder.client.ui.icons.Images;
import org.gcube.portlets.widgets.mpformbuilder.shared.catalogue.ResourceElementBean;
import com.google.gwt.cell.client.AbstractCell;
import com.google.gwt.cell.client.ValueUpdater;
import com.google.gwt.core.client.GWT;
import com.google.gwt.dom.client.Element;
import com.google.gwt.dom.client.NativeEvent;
import com.google.gwt.safehtml.shared.SafeHtmlBuilder;
import com.google.gwt.user.client.ui.Image;
/**
* Cell that renders right side panel objects
* @author Costantino Perciante at ISTI-CNR (costantino.perciante@isti.cnr.it)
*/
public class ResourceCellRight extends AbstractCell<ResourceElementBean>{
private static final Images image = GWT.create(Images.class);
private static final String tip = "Hold down the Control (CTRL) or Command button to select multiple options. Double click to access "
+ "this resource information";
public ResourceCellRight() {
super("keydown", "dblclick");
}
@Override
public void render(com.google.gwt.cell.client.Cell.Context context,
ResourceElementBean value, SafeHtmlBuilder sb) {
if (value == null || !value.isToBeAdded() || value.isFolder()) {
return;
}
Image file = new Image(image.fileIcon());
file.setWidth("15px");
file.setHeight("15px");
sb.appendHtmlConstant("<div title='" + value.getName() + "( " + tip + " )" + "' style='overflow-x:hidden;white-space:nowrap;text-overflow:ellipsis;max-width:240px; min-height:30px; padding-top:5px;'>");
sb.appendHtmlConstant("<span style='margin-left:5px'>");
sb.appendHtmlConstant(file.toString());
sb.appendHtmlConstant("</span>");
sb.appendHtmlConstant("<span style='margin-left:10px'>");
sb.appendHtmlConstant("<b>");
sb.appendEscaped(value.getEditableName());
sb.appendHtmlConstant("</b>");
sb.appendHtmlConstant("</span>");
sb.appendHtmlConstant("</div>");
}
@Override
public void onBrowserEvent(com.google.gwt.cell.client.Cell.Context context,
Element parent, ResourceElementBean value, NativeEvent event,
ValueUpdater<ResourceElementBean> valueUpdater) {
if(value == null || TwinColumnSelectionMainPanel.isFroozen())
return;
super.onBrowserEvent(context, parent, value, event, valueUpdater);
ResourceInfoForm info = new ResourceInfoForm(value, valueUpdater);
if(TwinColumnSelectionMainPanel.detailContainer.getWidget() != null)
TwinColumnSelectionMainPanel.detailContainer.clear();
TwinColumnSelectionMainPanel.detailContainer.add(info);
TwinColumnSelectionMainPanel.detailContainer.setVisible(true);
}
}

View File

@ -1,6 +1,6 @@
package org.gcube.portlets.widgets.mpformbuilder.client.ui.twincolumnselection;
import org.gcube.portlets.widgets.mpformbuilder.shared.catalogue.ResourceElementBean;
import org.gcube.portlets.widgets.mpformbuilder.shared.catalogue.ResourceElementBeanProfile;
import com.github.gwtbootstrap.client.ui.Button;
import com.github.gwtbootstrap.client.ui.ControlGroup;
@ -44,7 +44,7 @@ public class ResourceInfoForm extends Composite{
@UiField
ControlGroup controlName;
private ResourceElementBean resourceBean;
private ResourceElementBeanProfile resourceBean;
private static ResourceInfoFormUiBinder uiBinder = GWT
.create(ResourceInfoFormUiBinder.class);
@ -57,7 +57,7 @@ public class ResourceInfoForm extends Composite{
initWidget(uiBinder.createAndBindUi(this));
}
public ResourceInfoForm(final ResourceElementBean resource, final ValueUpdater<ResourceElementBean> valueUpdater) {
public ResourceInfoForm(final ResourceElementBeanProfile resource, final ValueUpdater<ResourceElementBeanProfile> valueUpdater) {
initWidget(uiBinder.createAndBindUi(this));
resourceBean = resource;

View File

@ -1,571 +0,0 @@
package org.gcube.portlets.widgets.mpformbuilder.client.ui.twincolumnselection;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
import org.gcube.portlets.widgets.mpformbuilder.shared.catalogue.ResourceElementBean;
import com.github.gwtbootstrap.client.ui.Breadcrumbs;
import com.github.gwtbootstrap.client.ui.Button;
import com.github.gwtbootstrap.client.ui.FluidContainer;
import com.github.gwtbootstrap.client.ui.NavLink;
import com.google.gwt.cell.client.ValueUpdater;
import com.google.gwt.core.client.GWT;
import com.google.gwt.dom.client.Style.BorderStyle;
import com.google.gwt.dom.client.Style.FontWeight;
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.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.user.cellview.client.CellList;
import com.google.gwt.user.cellview.client.HasKeyboardPagingPolicy.KeyboardPagingPolicy;
import com.google.gwt.user.client.ui.Composite;
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.ListDataProvider;
import com.google.gwt.view.client.MultiSelectionModel;
import com.google.gwt.view.client.SelectionChangeEvent;
/**
* The twin column panels for selection of the files to attach to the catalague product.
* @author Costantino Perciante at ISTI-CNR (costantino.perciante@isti.cnr.it)
* @author Francesco Mangiacrapa at ISTI-CNR
*/
public class TwinColumnSelectionMainPanel extends Composite{
@UiField
VerticalPanel leftContainer;
@UiField
VerticalPanel rightContainer;
@UiField
VerticalPanel buttonsPanel;
@UiField
Button allToRightButton;
@UiField
Button toRightButton;
@UiField
Button toLeftButton;
@UiField
Button allToLeftButton;
// @UiField
// Popover popoverResourceSelection;
// @UiField
// Button resourceInfoButton;
@UiField
Breadcrumbs breadcrumbs;
@UiField
FluidContainer mainContainerResourcesSelection;
// @UiField
// Button getResources;
@UiField
public static SimplePanel detailContainer;
/**
* The breadcrumb subpath with the linked folder
* @author Costantino Perciante at ISTI-CNR (costantino.perciante@isti.cnr.it)
*/
private class PathBean{
NavLink link;
ResourceElementBean resourceFolder;
PathBean(NavLink link, ResourceElementBean resourceFolder){
this.link = link;
this.resourceFolder = resourceFolder;
}
}
private static boolean frozen = false;
private List<PathBean> pathListBeans = new ArrayList<PathBean>();
private static final String PANEL_BORDER_COLOR = "#8899a6";
private static final String PANEL_HEIGHT = "400px";
private ShowMorePagerPanel showMorePanelLeft = new ShowMorePagerPanel();
private ShowMorePagerPanel showMorePanelRight = new ShowMorePagerPanel();
private CellList<ResourceElementBean> cellListLeft;
private CellList<ResourceElementBean> cellListRight;
private ListDataProvider<ResourceElementBean> dataProviderLeft = new ListDataProvider<ResourceElementBean>();
private ListDataProvider<ResourceElementBean> dataProviderRight = new ListDataProvider<ResourceElementBean>();
private MultiSelectionModel<ResourceElementBean> selectionModelRight;
private MultiSelectionModel<ResourceElementBean> selectionModelLeft;
private final ResourceElementBean initialBean;
// private final static HTML aboutHeader = new HTML("<b>Resource Manager</b>");
// private final static HTML aboutBody = new HTML("<p style='text-align:justify;'>Move the files you want to attach to the product on the right panel below."
// + " Please consider that any complex hierarchy structure you may have will be flatten.</p>");
// private static final short PATH_THRESHOLD = 1; // TODO
private static TwinColumnSelectionMainPanelUiBinder uiBinder = GWT
.create(TwinColumnSelectionMainPanelUiBinder.class);
interface TwinColumnSelectionMainPanelUiBinder extends
UiBinder<Widget, TwinColumnSelectionMainPanel> {
}
public TwinColumnSelectionMainPanel(ResourceElementBean initialBean) {
initWidget(uiBinder.createAndBindUi(this));
frozen = false;
GWT.log(initialBean.toString());
this.initialBean = initialBean;
buttonsPanel.getElement().getStyle().setMarginTop(50, Unit.PCT);
allToRightButton.getElement().getStyle().setMarginBottom(4, Unit.PX);
toRightButton.getElement().getStyle().setMarginBottom(4, Unit.PX);
toLeftButton.getElement().getStyle().setMarginBottom(4, Unit.PX);
allToLeftButton.getElement().getStyle().setMarginBottom(4, Unit.PX);
buttonsPanel.getElement().setAttribute("align", "center");
// popoverResourceSelection.setPlacement(Placement.LEFT);
// popoverResourceSelection.setHeading(aboutHeader.getHTML());
// popoverResourceSelection.setText(aboutBody.getHTML());
// resourceInfoButton.getElement().getStyle().setFloat(Float.RIGHT);
// resourceInfoButton.getElement().getStyle().setPaddingRight(0, Unit.PX);
mainContainerResourcesSelection.getElement().getStyle().setPadding(10, Unit.PX);
breadcrumbs.getElement().getStyle().setBackgroundColor("white");
breadcrumbs.getElement().getStyle().setFontWeight(FontWeight.BOLD);
breadcrumbs.getElement().getStyle().setMarginLeft(0, Unit.PX);
mainContainerResourcesSelection.getElement().getStyle().setMarginLeft(10, Unit.PX);
mainContainerResourcesSelection.getElement().getStyle().setMarginBottom(20, Unit.PX);
mainContainerResourcesSelection.getElement().getStyle().setMarginTop(0, Unit.PX);
prepareHandlers();
initLeftSidePanel(initialBean);
initRightSidePanel();
}
/**
* Initialize the left side panel
*/
private void initLeftSidePanel(final ResourceElementBean initialBean) {
// initialize the left side list
ResourceCellLeft cell = new ResourceCellLeft();
// Set a key provider that provides a unique key for each object.
cellListLeft = new CellList<ResourceElementBean>(cell, ResourceElementBean.KEY_PROVIDER);
cellListLeft.setKeyboardPagingPolicy(KeyboardPagingPolicy.INCREASE_RANGE);
// set page size
int size = initialBean.isFolder() ? initialBean.getChildren().size() : 1;
cellListLeft.setPageSize(size);
// Add a selection model so we can select cells.
selectionModelLeft = new MultiSelectionModel<ResourceElementBean>(ResourceElementBean.KEY_PROVIDER);
cellListLeft.setSelectionModel(selectionModelLeft);
// perform an action on selection
selectionModelLeft.addSelectionChangeHandler(new SelectionChangeEvent.Handler() {
public void onSelectionChange(SelectionChangeEvent event) {
if(frozen)
return;
Iterator<ResourceElementBean> selectedObjectsIterator = selectionModelLeft.getSelectedSet().iterator();
while (selectedObjectsIterator.hasNext()) {
ResourceElementBean selectedBean = selectedObjectsIterator.next();
if(selectedBean.isFolder()){
// a single folder selected
if(selectionModelLeft.getSelectedSet().size() == 1){
// update path
final NavLink navElem = new NavLink(selectedBean.getName());
navElem.getElement().getStyle().setFontWeight(FontWeight.BOLD);
final PathBean pathBean = new PathBean(navElem, selectedBean);
navElem.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
removeStartingFromBreadcrumbs(navElem, pathBean);
GWT.log("Clicked on element " + pathBean.resourceFolder.getName());
//breadcrumbsUpdater();
ResourceElementBean folder = pathBean.resourceFolder;
Collections.sort(folder.getChildren());
dataProviderLeft.setList(folder.getChildren());
dataProviderLeft.refresh();
}
});
pathListBeans.add(pathBean);
breadcrumbs.add(navElem);
//breadcrumbsUpdater();
Collections.sort(selectedBean.getChildren());
GWT.log("Children " + selectedBean.getChildren());
dataProviderLeft.setList(selectedBean.getChildren());
cellListLeft.setPageSize(selectedBean.getChildren().size());
dataProviderLeft.refresh();
}
selectionModelLeft.setSelected(selectedBean, false);
}
}
// enable the buttons that allows to move the objects to the right
enableMoveToRightButtons(selectionModelLeft.getSelectedSet());
}
});
// set the list into the provider
if(initialBean.isFolder()){
Collections.sort(this.initialBean.getChildren());
dataProviderLeft.setList(this.initialBean.getChildren());
}else
dataProviderLeft.setList(Arrays.asList(this.initialBean));
// add root to breadcrumb
final NavLink root = new NavLink(initialBean.getName());
final PathBean pathBean = new PathBean(root, initialBean);
root.getElement().getStyle().setFontWeight(FontWeight.BOLD);
pathListBeans.add(pathBean);
breadcrumbs.add(root);
root.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
removeStartingFromBreadcrumbs(root, pathBean);
//breadcrumbsUpdater();
// set back the root content list
dataProviderLeft.setList(initialBean.getChildren());
cellListLeft.setPageSize(initialBean.getChildren().size());
dataProviderLeft.refresh();
}
});
// set the cell list into the provider
dataProviderLeft.addDataDisplay(cellListLeft);
// manage showMorePanelLeft
showMorePanelLeft.setDisplay(cellListLeft);
showMorePanelLeft.setHeight(PANEL_HEIGHT);
showMorePanelLeft.getElement().getStyle().setBorderStyle(BorderStyle.SOLID);
showMorePanelLeft.getElement().getStyle().setBorderWidth(2, Unit.PX);
showMorePanelLeft.getElement().getStyle().setBorderColor(PANEL_BORDER_COLOR);
// add the list to the leftContainerPanel
leftContainer.add(showMorePanelLeft);
}
/**
* Update the path
* @param navElem
* @param pathBean
*/
public void removeStartingFromBreadcrumbs(NavLink navElem, PathBean pathBean){
// remove data after
Iterator<Widget> iteratorBreadcrumb = breadcrumbs.iterator();
Iterator<PathBean> iteratorListPath = pathListBeans.iterator();
boolean delete = false;
while(iteratorBreadcrumb.hasNext()){
Widget current = iteratorBreadcrumb.next();
if(delete){
current.removeFromParent();
iteratorBreadcrumb.remove();
}
if(!delete && navElem.equals(current))
delete = true;
}
delete = false;
while(iteratorListPath.hasNext()){
PathBean current = iteratorListPath.next();
if(delete)
iteratorListPath.remove();
if(!delete && pathBean.equals(current))
delete = true;
}
}
/**
* Initialize the left side panel
*/
private void initRightSidePanel() {
// initialize the left side list
ResourceCellRight cell = new ResourceCellRight();
// Set a key provider that provides a unique key for each object.
cellListRight = new CellList<ResourceElementBean>(cell, ResourceElementBean.KEY_PROVIDER);
cellListRight.setKeyboardPagingPolicy(KeyboardPagingPolicy.INCREASE_RANGE);
cellListRight.setValueUpdater(new ValueUpdater<ResourceElementBean>() {
@Override
public void update(ResourceElementBean value) {
// just redraw the list
cellListRight.redraw();
}
});
// Add a selection model so we can select cells.
selectionModelRight = new MultiSelectionModel<ResourceElementBean>(ResourceElementBean.KEY_PROVIDER);
cellListRight.setSelectionModel(selectionModelRight);
// perform an action on selection
selectionModelRight.addSelectionChangeHandler(new SelectionChangeEvent.Handler() {
public void onSelectionChange(SelectionChangeEvent event) {
if(frozen)
return;
enableMoveToLeftButtons(selectionModelRight.getSelectedSet());
}
});
// set the cell list into the provider
dataProviderRight.addDataDisplay(cellListRight);
// manage showMorePanelRight
showMorePanelRight.setDisplay(cellListRight);
showMorePanelRight.setHeight(PANEL_HEIGHT);
showMorePanelRight.getElement().getStyle().setBorderStyle(BorderStyle.SOLID);
showMorePanelRight.getElement().getStyle().setBorderWidth(2, Unit.PX);
showMorePanelRight.getElement().getStyle().setBorderColor(PANEL_BORDER_COLOR);
// add the list to the leftContainerPanel
rightContainer.add(showMorePanelRight);
}
/**
* Enable/disable the buttons to move objects from left to right properly.
* @param setselectedItemsLeft
*/
private void enableMoveToRightButtons(Set<ResourceElementBean> setselectedItemsLeft){
if(setselectedItemsLeft == null || setselectedItemsLeft.isEmpty()){
allToRightButton.setEnabled(false);
toRightButton.setEnabled(false);
}
else if(setselectedItemsLeft.size() > 1){
allToRightButton.setEnabled(true);
toRightButton.setEnabled(false);
}
else{
allToRightButton.setEnabled(false);
toRightButton.setEnabled(true);
}
}
/**
* Enable/disable the buttons to move objects from right to left properly.
* @param setselectedItemsRight
*/
private void enableMoveToLeftButtons(Set<ResourceElementBean> setselectedItemsRight){
if(setselectedItemsRight == null || setselectedItemsRight.isEmpty()){
allToLeftButton.setEnabled(false);
allToLeftButton.setEnabled(false);
}
else if(setselectedItemsRight.size() > 1){
allToLeftButton.setEnabled(true);
toLeftButton.setEnabled(false);
}
else{
allToLeftButton.setEnabled(false);
toLeftButton.setEnabled(true);
}
}
/**
* Prepare the buttons' handlers
*/
private void prepareHandlers() {
allToRightButton.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
moveToRight(selectionModelLeft.getSelectedSet());
}
});
toRightButton.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
moveToRight(selectionModelLeft.getSelectedSet());
}
});
allToLeftButton.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
moveToLeft(selectionModelRight.getSelectedSet());
}
});
toLeftButton.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
moveToLeft(selectionModelRight.getSelectedSet());
}
});
}
/**
* Move to right elements
* @param set the elements to move
*/
private void moveToRight(Set<ResourceElementBean> setSelected){
if(setSelected == null || setSelected.isEmpty())
return;
Iterator<ResourceElementBean> iterator = setSelected.iterator();
while (iterator.hasNext()) {
ResourceElementBean resourceElementBean = iterator
.next();
resourceElementBean.setToBeAdded(true);
int indexRight = dataProviderRight.getList().indexOf(resourceElementBean);
if(indexRight >= 0)
dataProviderRight.getList().set(indexRight, resourceElementBean);
else{
dataProviderRight.getList().add(resourceElementBean);
Collections.sort(dataProviderRight.getList());
dataProviderRight.refresh();
}
int indexLeft = dataProviderLeft.getList().indexOf(resourceElementBean);
dataProviderLeft.getList().set(indexLeft, resourceElementBean);
}
}
/**
* Move to left elements
* @param setSelected the elements to move
*/
private void moveToLeft(Set<ResourceElementBean> setSelected){
if(setSelected == null || setSelected.isEmpty())
return;
Iterator<ResourceElementBean> iterator = setSelected.iterator();
while (iterator.hasNext()) {
ResourceElementBean resourceElementBean = iterator.next();
resourceElementBean.setToBeAdded(false);
}
Collections.sort(dataProviderLeft.getList());
dataProviderLeft.refresh();
dataProviderRight.refresh();
}
/**
* Freeze the panel
*/
public void freeze(boolean bool) {
frozen = bool;
Iterator<Widget> iteratorOverPath = breadcrumbs.iterator();
while (iteratorOverPath.hasNext()) {
Widget widget = iteratorOverPath.next();
if(widget instanceof NavLink)
((NavLink)widget).setActive(!bool);
}
allToRightButton.setEnabled(!bool);
toRightButton.setEnabled(!bool);
allToLeftButton.setEnabled(!bool);
toLeftButton.setEnabled(!bool);
}
/**
* Returns the root parent with the children as files to save
* @return the resources to save
*/
public ResourceElementBean getResourcesToPublish(){
List<ResourceElementBean> current = dataProviderRight.getList();
ResourceElementBean toReturn = new ResourceElementBean();
List<ResourceElementBean> children = new ArrayList<ResourceElementBean>();
for (ResourceElementBean resource : current) {
if(resource.isToBeAdded() && !resource.isFolder()){ // be sure ...
ResourceElementBean beanWithoutChildren = new ResourceElementBean(resource);
beanWithoutChildren.setName(resource.getEditableName());
children.add(beanWithoutChildren);
}
}
toReturn.setChildren(children);
return toReturn;
}
/**
* @return the freezed
*/
public static boolean isFroozen() {
return frozen;
}
// @UiHandler("getResources")
// void getResources(ClickEvent ce){
// getResourcesToPublish();
// }
//
// /**
// * Short the current path if needed
// */
// private void breadcrumbsUpdater(){
//
// // ignore first and last elem
// boolean reduce = (pathListBeans.size() - 2) > PATH_THRESHOLD;
//
// GWT.log("Is to reduce? " + reduce);
//
// GWT.log("Full size is " + pathListBeans.size());
//
// if(!reduce){
// GWT.log("Restore");
// for(int i = 0; i < pathListBeans.size(); i++){
// PathBean bean = pathListBeans.get(i);
// GWT.log("Elem is " + bean.resourceFolder);
// bean.link.setText(bean.resourceFolder.getName());
// bean.link.setVisible(true);
// }
// }else{
// for(int i = 1; i < pathListBeans.size(); i++){
// PathBean bean = pathListBeans.get(i);
//
// if(i == (pathListBeans.size() - 1)){
// bean.link.setText(bean.resourceFolder.getName());
// bean.link.setVisible(true);
// }else if(i == (pathListBeans.size() - 2)){
// GWT.log("The last to modify ****" + bean.resourceFolder.getName());
// bean.link.setText("...");
// bean.link.setVisible(true);
// }else{
// bean.link.setText(bean.resourceFolder.getName());
// bean.link.setVisible(false);
// }
// }
// }
// GWT.log("Updated list is " + pathListBeans.toString());
// }
}

View File

@ -1,58 +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.widgets.mpformbuilder.client.ui.twincolumnselection">
<ui:style>
</ui:style>
<g:HTMLPanel>
<b:FluidContainer ui:field="mainContainerResourcesSelection">
<!-- <b:FluidRow> -->
<!-- <b:Column offset="6" size="1"> -->
<!-- <b:Popover ui:field="popoverResourceSelection" html="true"> -->
<!-- <b:Button ui:field="resourceInfoButton" type="LINK" icon="INFO_SIGN" -->
<!-- size="LARGE"></b:Button> -->
<!-- </b:Popover> -->
<!-- </b:Column> -->
<!-- </b:FluidRow> -->
<b:FluidRow>
<b:Column size="11">
<b:Breadcrumbs ui:field="breadcrumbs" divider=">"
title="Current path">
</b:Breadcrumbs>
</b:Column>
</b:FluidRow>
<b:FluidRow>
<b:Column size="3" ui:field="leftColumn">
<!-- <b:Button enabled="true" type="LINK" ui:field="goRootButton">Root
level</b:Button> -->
<!-- <b:Button enabled="true" type="LINK" ui:field="goUpButton">Go up</b:Button> -->
<g:VerticalPanel ui:field="leftContainer" width="100%">
</g:VerticalPanel>
</b:Column>
<b:Column size="1" ui:field="centralPanel">
<g:VerticalPanel ui:field="buttonsPanel">
<b:Button ui:field="allToRightButton" name="toRight"
enabled="false" title="Add selected files" text=">>" />
<b:Button ui:field="toRightButton" name="toRight"
enabled="false" title="Add selected file" text=">" />
<b:Button ui:field="toLeftButton" name="toLeft" enabled="false"
title="Remove selected file" text="&lt;" />
<b:Button ui:field="allToLeftButton" name="toRight"
enabled="false" title="Remove selected files" text="&lt;&lt;" />
</g:VerticalPanel>
</b:Column>
<b:Column size="3" ui:field="rightColumn">
<g:VerticalPanel ui:field="rightContainer" width="100%"></g:VerticalPanel>
</b:Column>
<b:Column size="3" ui:field="detailColumn">
<g:SimplePanel ui:field="detailContainer" width="100%"></g:SimplePanel>
</b:Column>
<!-- <b:Column size="2"> -->
<!-- <m:ResourceInfoForm ui:field="resourceInfoForm"></m:ResourceInfoForm> -->
<!-- </b:Column> -->
</b:FluidRow>
</b:FluidContainer>
<!-- <b:Button ui:field="getResources">Get Resources</b:Button> -->
</g:HTMLPanel>
</ui:UiBinder>

View File

@ -22,7 +22,6 @@ import com.google.gwt.json.client.JSONString;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.HTML;
// TODO: Auto-generated Javadoc
/**
* The Class MultipleDilaogUploadStream.
*
@ -46,8 +45,11 @@ public class MultipleDilaogUpload extends DialogUpload {
/** The id folder. */
private String idFolder;
/**
* Instantiates a new multiple dilaog upload.
*
* @param fieldName the field name used in the web form
*/
public MultipleDilaogUpload(String fieldName) {
this.fileUploadID = GenerateUUID.get(10, 16); // is tagID
@ -87,7 +89,7 @@ public class MultipleDilaogUpload extends DialogUpload {
FileUploaded fakeFile = new FileUploaded();
fakeFile.setFileName(files[i]);
fakeItem.setFile(fakeFile);
fakeFile.setFilePaths(new FilePath(getFieldName())); // The Form Field Label is unique for single-multiple
fakeFile.setFilePath(new FilePath(getFieldName())); // The Form Field Label is unique for single-multiple
// upload
fakeUploaders.add(fakeItem);
}

View File

@ -46,7 +46,7 @@ public class CustomLegend extends Legend {
String htmlToAdd = text;
if (addIsRequiredTxt)
htmlToAdd += "<small><span style='color:red;'>&nbsp*</span> is required</small>";
htmlToAdd += "<small><span style='color:red;'>&nbsp*</span> is required field</small>";
HTML toHMTL = new HTML(htmlToAdd);

View File

@ -4,11 +4,11 @@
package org.gcube.portlets.widgets.mpformbuilder.client.ui.utils;
import org.gcube.portlets.widgets.mpformbuilder.client.ui.icons.Images;
import com.github.gwtbootstrap.client.ui.Icon;
import com.github.gwtbootstrap.client.ui.constants.IconType;
import com.google.gwt.dom.client.Style.Unit;
import com.google.gwt.user.client.ui.HTML;
import com.google.gwt.user.client.ui.HorizontalPanel;
import com.google.gwt.user.client.ui.Image;
/**
* The Class LoaderIcon.
@ -19,8 +19,10 @@ import com.google.gwt.user.client.ui.Image;
public class LoaderIcon extends HorizontalPanel{
private Image imgLoading = new Image(Images.ICONS.loading());
//private Image imgLoading = new Image(Images.ICONS.loading());
private HTML txtLoading = new HTML("");
private Icon iconSpinner = new Icon(IconType.SPINNER);
/**
* Instantiates a new loader icon.
@ -37,8 +39,11 @@ public class LoaderIcon extends HorizontalPanel{
*/
public LoaderIcon() {
setStyleName("marginTop20");
add(imgLoading);
add(txtLoading);
iconSpinner.setSpin(true);
iconSpinner.getElement().getStyle().setProperty("animation", "spin 1s infinite linear");
iconSpinner.getElement().getStyle().setMarginLeft(5, Unit.PX);
add(iconSpinner);
}
/**

View File

@ -3,6 +3,13 @@
.legend-style {
width: auto;
padding: 10px;
padding-left: 10px;
margin-bottom: 0px;
border-bottom: 0px;
padding-right: 10px;
}
.legend-style small {
display: block;
font-size: 12px !important;
}

View File

@ -21,7 +21,6 @@ import org.gcube.common.metadataprofilediscovery.jaxb.MetadataValidator;
import org.gcube.common.metadataprofilediscovery.jaxb.MetadataVocabulary;
import org.gcube.common.metadataprofilediscovery.jaxb.NamespaceCategory;
import org.gcube.common.scope.api.ScopeProvider;
import org.gcube.portlets.widgets.mpformbuilder.server.util.WsUtil;
import org.gcube.portlets.widgets.mpformbuilder.shared.metadata.CategoryWrapper;
import org.gcube.portlets.widgets.mpformbuilder.shared.metadata.DataTypeWrapper;
import org.gcube.portlets.widgets.mpformbuilder.shared.metadata.FieldAsGroup;
@ -119,10 +118,10 @@ public class MetadataDiscovery {
MetaDataProfileBean bean = toMetaDataProfileBean(metadata, categories, profile.getName());
beans.add(bean);
if(!WsUtil.isWithinPortal()) {
LOG.info("DEV MODE ENABLED - Out of portal!");
randomizeCurrentValues(bean.getMetadataFields());
}
// if(!WsUtil.isWithinPortal()) {
// LOG.info("DEV MODE ENABLED - Out of portal!");
// randomizeCurrentValues(bean.getMetadataFields());
// }
}
prettyPrintList(beans);
@ -145,14 +144,14 @@ public class MetadataDiscovery {
switch (dtw) {
case Boolean:
metadataFieldWrapper.setCurrentValue(Boolean.FALSE.toString());
metadataFieldWrapper.setCurrentValues(Boolean.FALSE.toString());
break;
case Number:
metadataFieldWrapper.setCurrentValue(new Random().nextInt()+"");
metadataFieldWrapper.setCurrentValues(new Random().nextInt()+"");
break;
case String:
case Text:
metadataFieldWrapper.setCurrentValue("Text "+UUID.randomUUID());
metadataFieldWrapper.setCurrentValues("Text "+UUID.randomUUID());
break;
default:
break;

View File

@ -7,72 +7,66 @@ import java.util.List;
import org.gcube.portlets.widgets.mpformbuilder.shared.metadata.MetaDataProfileBean;
import org.gcube.portlets.widgets.mpformbuilder.shared.upload.FileUploaded;
/**
* The Class GenericDatasetBean.
*
* @author Francesco Mangiacrapa at ISTI-CNR (francesco.mangiacrapa@isti.cnr.it)
*
* Oct 19, 2020
* Oct 19, 2020
*/
public class GenericDatasetBean implements Serializable {
public class GenericDatasetBean<T extends MetaDataProfileBean, F extends FileUploaded> implements Serializable {
/** The Constant serialVersionUID. */
private static final long serialVersionUID = -5215392381589702647L;
/** The metadata profile list. */
private List<MetaDataProfileBean> metadataProfileList;
private List<T> metadataProfileList;
/** The form data entry fields. */
private LinkedHashMap<String, List<String>> formDataEntryFields;
/** The files uploaded. */
private List<FileUploaded> filesUploaded;
private List<F> filesUploaded;
/**
* Instantiates a new generic dataset bean.
*/
public GenericDatasetBean(){
public GenericDatasetBean() {
}
/**
* Instantiates a new generic dataset bean.
*
* @param metadataProfileList the metadata profile list
* @param formDataEntryFields the form data entry fields
* @param filesUploaded the files uploaded
* @param filesUploaded the files uploaded
*/
public GenericDatasetBean(List<MetaDataProfileBean> metadataProfileList, LinkedHashMap<String, List<String>> formDataEntryFields,
List<FileUploaded> filesUploaded) {
public GenericDatasetBean(List<T> metadataProfileList, LinkedHashMap<String, List<String>> formDataEntryFields,
List<F> filesUploaded) {
super();
this.metadataProfileList = metadataProfileList;
this.formDataEntryFields = formDataEntryFields;
this.filesUploaded = filesUploaded;
}
/**
* Gets the metadata profile list.
*
* @return the metadata profile list
*/
public List<MetaDataProfileBean> getMetadataProfileList() {
public List<T> getMetadataProfileList() {
return metadataProfileList;
}
/**
* Sets the metadata profile list.
*
* @param metadataProfileList the new metadata profile list
*/
public void setMetadataProfileList(List<MetaDataProfileBean> metadataProfileList) {
public void setMetadataProfileList(List<T> metadataProfileList) {
this.metadataProfileList = metadataProfileList;
}
/**
* Gets the form data entry fields.
*
@ -82,7 +76,6 @@ public class GenericDatasetBean implements Serializable {
return formDataEntryFields;
}
/**
* Sets the form data entry fields.
*
@ -92,27 +85,24 @@ public class GenericDatasetBean implements Serializable {
this.formDataEntryFields = formDataEntryFields;
}
/**
* Gets the files uploaded.
*
* @return the files uploaded
*/
public List<FileUploaded> getFilesUploaded() {
public List<F> getFilesUploaded() {
return filesUploaded;
}
/**
* Sets the files uploaded.
*
* @param filesUploaded the new files uploaded
*/
public void setFilesUploaded(List<FileUploaded> filesUploaded) {
public void setFilesUploaded(List<F> filesUploaded) {
this.filesUploaded = filesUploaded;
}
/**
* To string.
*
@ -124,6 +114,4 @@ public class GenericDatasetBean implements Serializable {
+ formDataEntryFields + ", filesUploaded=" + filesUploaded + "]";
}
}

View File

@ -1,335 +0,0 @@
package org.gcube.portlets.widgets.mpformbuilder.shared.catalogue;
import java.io.Serializable;
import java.util.List;
import java.util.Map;
import org.gcube.portlets.widgets.mpformbuilder.shared.metadata.MetaDataProfileBean;
/**
* This bean will contain during ckan metadata creation information related to the future build.
* @author Costantino Perciante at ISTI-CNR (costantino.perciante@isti.cnr.it)
*/
@SuppressWarnings("serial")
public class DatasetBean implements Serializable {
private String id;
private String title;
private String description;
private String license; // chosen by the user
private String source; // url of the folder in the workspace
private String authorName; // author name
private String authorSurname; // author surname
private String authorFullName;
private String authorEmail; // owner's email
private String maintainer;
private String maintainerEmail;
private String ownerIdentifier; // owner of the folder into the workspace (e.g., andrea.rossi)
private String chosenType; // the name of the MetaDataType chosen
private String selectedOrganization;
private long version; // version 1, 2 ...
private boolean visible; // Private (false) or Public(true)
private List<OrganizationBean> organizationList; // list of organization in which the user is present and could create the dataset
private ResourceElementBean resourceRoot; // in case of workspace, this is the directory root or the single file information
private List<MetaDataProfileBean> metadataList;
private List<String> tags; // on retrieve, they are the keys of the product
private List<String> tagsVocabulary; // when available
private Map<String, List<String>> customFields;
private List<OrganizationBean> groups;
private List<OrganizationBean> groupsForceCreation;
public DatasetBean(){
super();
}
/** Create a metadata bean object.
* @param id
* @param title
* @param description
* @param customFields
* @param tags
* @param license
* @param visibility
* @param source
* @param version
* @param author
* @param authorEmail
* @param maintainer
* @param maintainerEmail
* @param ownerIdentifier
* @param organizationList
* @param selectedOrganization
* @param resourcesIds
* @param addResources
* @param metadataList
*/
public DatasetBean(String id, String title, String description,
Map<String, List<String>> customFields, List<String> tags,
String license, boolean visible, String source, long version,
String authorName, String authorSurname, String authorEmail, String maintainer,
String maintainerEmail, String ownerIdentifier,
List<OrganizationBean> organizationList, String selectedOrganization,
ResourceElementBean resourceRoot,
List<MetaDataProfileBean> metadataList, List<OrganizationBean> groups, List<String> tagsVocabulary) {
super();
this.id = id;
this.title = title;
this.description = description;
this.customFields = customFields;
this.tags = tags;
this.license = license;
this.visible = visible;
this.source = source;
this.version = version;
this.authorName = authorName;
this.authorSurname = authorSurname;
this.authorEmail = authorEmail;
this.maintainer = maintainer;
this.maintainerEmail = maintainerEmail;
this.ownerIdentifier = ownerIdentifier;
this.organizationList = organizationList;
this.selectedOrganization = selectedOrganization;
this.resourceRoot = resourceRoot;
this.metadataList = metadataList;
this.groups = groups;
this.tagsVocabulary = tagsVocabulary;
}
public String getChosenType() {
return chosenType;
}
public void setChosenType(String chosenType) {
this.chosenType = chosenType;
}
public List<MetaDataProfileBean> getMetadataList() {
return metadataList;
}
public void setMetadataList(List<MetaDataProfileBean> metadataListTypes) {
this.metadataList = metadataListTypes;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getOwnerIdentifier() {
return ownerIdentifier;
}
public void setOwnerIdentifier(String ownerIdentifier) {
this.ownerIdentifier = ownerIdentifier;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public Map<String, List<String>> getCustomFields() {
return customFields;
}
public void setCustomFields(Map<String, List<String>> customFields) {
this.customFields = customFields;
}
public List<String> getTags() {
return tags;
}
public void setTags(List<String> tags) {
this.tags = tags;
}
public String getLicense() {
return license;
}
public void setLicense(String license) {
this.license = license;
}
public boolean getVisibility() {
return visible;
}
public void setVisibile(boolean visibile) {
this.visible = visibile;
}
public String getSource() {
return source;
}
public void setSource(String source) {
this.source = source;
}
public long getVersion() {
return version;
}
public void setVersion(long version) {
this.version = version;
}
public String getAuthorName() {
return authorName;
}
public void setAuthorName(String authorName) {
this.authorName = authorName;
}
public String getAuthorSurname() {
return authorSurname;
}
public void setAuthorSurname(String authorSurname) {
this.authorSurname = authorSurname;
}
public String getAuthorEmail() {
return authorEmail;
}
public void setAuthorEmail(String authorEmail) {
this.authorEmail = authorEmail;
}
public String getMaintainer() {
return maintainer;
}
public void setMaintainer(String maintainer) {
this.maintainer = maintainer;
}
public String getMaintainerEmail() {
return maintainerEmail;
}
public void setMaintainerEmail(String maintainerEmail) {
this.maintainerEmail = maintainerEmail;
}
public List<OrganizationBean> getOrganizationList() {
return organizationList;
}
public void setOrganizationList(List<OrganizationBean> organizationList) {
this.organizationList = organizationList;
}
public String getSelectedOrganization() {
return selectedOrganization;
}
public void setSelectedOrganization(String selectedOrganization) {
this.selectedOrganization = selectedOrganization;
}
public ResourceElementBean getResourceRoot() {
return resourceRoot;
}
public void setResourceRoot(ResourceElementBean resourceRoot) {
this.resourceRoot = resourceRoot;
}
public String getAuthorFullName() {
return authorFullName;
}
public void setAuthorFullName(String authorFullName) {
this.authorFullName = authorFullName;
}
public List<OrganizationBean> getGroups() {
return groups;
}
public void setGroups(List<OrganizationBean> groups) {
this.groups = groups;
}
public List<String> getTagsVocabulary() {
return tagsVocabulary;
}
public void setTagsVocabulary(List<String> tagsVocabulary) {
this.tagsVocabulary = tagsVocabulary;
}
public List<OrganizationBean> getGroupsForceCreation() {
return groupsForceCreation;
}
public void setGroupsForceCreation(List<OrganizationBean> groupsForceCreation) {
this.groupsForceCreation = groupsForceCreation;
}
@Override
public String toString() {
return "DatasetBean ["
+ (id != null ? "id=" + id + ", " : "")
+ (title != null ? "title=" + title + ", " : "")
+ (description != null ? "description=" + description + ", "
: "")
+ (license != null ? "license=" + license + ", " : "")
+ (source != null ? "source=" + source + ", " : "")
+ (authorName != null ? "authorName=" + authorName + ", " : "")
+ (authorSurname != null ? "authorSurname=" + authorSurname
+ ", " : "")
+ (authorFullName != null ? "authorFullName=" + authorFullName
+ ", " : "")
+ (authorEmail != null ? "authorEmail=" + authorEmail + ", "
: "")
+ (maintainer != null ? "maintainer=" + maintainer + ", " : "")
+ (maintainerEmail != null ? "maintainerEmail="
+ maintainerEmail + ", " : "")
+ (ownerIdentifier != null ? "ownerIdentifier="
+ ownerIdentifier + ", " : "")
+ (chosenType != null ? "chosenType=" + chosenType + ", " : "")
+ (selectedOrganization != null ? "selectedOrganization="
+ selectedOrganization + ", " : "")
+ "version="
+ version
+ ", visible="
+ visible
+ ", "
+ (organizationList != null ? "organizationList="
+ organizationList + ", " : "")
+ (resourceRoot != null ? "resourceRoot=" + resourceRoot + ", "
: "")
+ (metadataList != null ? "metadataList=" + metadataList + ", "
: "")
+ (tags != null ? "tags=" + tags + ", " : "")
+ (tagsVocabulary != null ? "tagsVocabulary=" + tagsVocabulary
+ ", " : "")
+ (customFields != null ? "customFields=" + customFields + ", "
: "")
+ (groups != null ? "groups=" + groups + ", " : "")
+ (groupsForceCreation != null ? "groupsForceCreation="
+ groupsForceCreation : "") + "]";
}
}

View File

@ -1,75 +0,0 @@
package org.gcube.portlets.widgets.mpformbuilder.shared.catalogue;
import java.io.Serializable;
/**
* A ckan organization/group (you can check its nature by looking at getIsOrganization();) like bean with name and title
* @author Costantino Perciante (costantino.perciante@isti.cnr.it)
*/
public class OrganizationBean implements Serializable{
private static final long serialVersionUID = -6566519399945530602L;
private String title;
private String name;
private boolean isOrganization;
private boolean propagateUp; // an item linked to this group has to be added on the whole hierarchy chain
public OrganizationBean(){
super();
}
public OrganizationBean(String title, String name, boolean isOrganization) {
super();
this.title = title;
this.name = name;
this.isOrganization = isOrganization;
}
public OrganizationBean(String title, String name, boolean isOrganization, boolean propagateUp) {
super();
this.title = title;
this.name = name;
this.isOrganization = isOrganization;
this.propagateUp = propagateUp;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public boolean isOrganization() {
return isOrganization;
}
public void setOrganization(boolean isOrganization) {
this.isOrganization = isOrganization;
}
public boolean isPropagateUp() {
return propagateUp;
}
public void setPropagateUp(boolean propagateUp) {
this.propagateUp = propagateUp;
}
@Override
public String toString() {
return "OrganizationBean [title=" + title + ", name=" + name
+ ", isOrganization=" + isOrganization + ", propagateUp="
+ propagateUp + "]";
}
}

View File

@ -0,0 +1,146 @@
package org.gcube.portlets.widgets.mpformbuilder.shared.catalogue;
import java.io.Serializable;
import com.google.gwt.user.client.rpc.IsSerializable;
/**
* The Class OrganizationBeanProfile.
*
* @author Francesco Mangiacrapa at ISTI-CNR francesco.mangiacrapa@isti.cnr.it
*
* Feb 15, 2024
*/
public class OrganizationBeanProfile implements Serializable, IsSerializable {
/**
*
*/
private static final long serialVersionUID = -2078766102599662775L;
private String title;
private String name;
private boolean isOrganization;
private boolean propagateUp; // an item linked to this group has to be added on the whole hierarchy chain
/**
* Instantiates a new organization bean profile.
*/
public OrganizationBeanProfile() {
}
/**
* Instantiates a new organization bean profile.
*
* @param title the title
* @param name the name
* @param isOrganization the is organization
*/
public OrganizationBeanProfile(String title, String name, boolean isOrganization) {
this.title = title;
this.name = name;
this.isOrganization = isOrganization;
}
/**
* Instantiates a new organization bean profile.
*
* @param title the title
* @param name the name
* @param isOrganization the is organization
* @param propagateUp the propagate up
*/
public OrganizationBeanProfile(String title, String name, boolean isOrganization, boolean propagateUp) {
this.title = title;
this.name = name;
this.isOrganization = isOrganization;
this.propagateUp = propagateUp;
}
/**
* Gets the title.
*
* @return the title
*/
public String getTitle() {
return title;
}
/**
* Sets the title.
*
* @param title the new title
*/
public void setTitle(String title) {
this.title = title;
}
/**
* Gets the name.
*
* @return the name
*/
public String getName() {
return name;
}
/**
* Sets the name.
*
* @param name the new name
*/
public void setName(String name) {
this.name = name;
}
/**
* Checks if is organization.
*
* @return true, if is organization
*/
public boolean isOrganization() {
return isOrganization;
}
/**
* Sets the organization.
*
* @param isOrganization the new organization
*/
public void setOrganization(boolean isOrganization) {
this.isOrganization = isOrganization;
}
/**
* Checks if is propagate up.
*
* @return true, if is propagate up
*/
public boolean isPropagateUp() {
return propagateUp;
}
/**
* Sets the propagate up.
*
* @param propagateUp the new propagate up
*/
public void setPropagateUp(boolean propagateUp) {
this.propagateUp = propagateUp;
}
@Override
public String toString() {
StringBuilder builder = new StringBuilder();
builder.append("OrganizationBeanProfile [title=");
builder.append(title);
builder.append(", name=");
builder.append(name);
builder.append(", isOrganization=");
builder.append(isOrganization);
builder.append(", propagateUp=");
builder.append(propagateUp);
builder.append("]");
return builder.toString();
}
}

View File

@ -3,14 +3,15 @@ package org.gcube.portlets.widgets.mpformbuilder.shared.catalogue;
import java.io.Serializable;
import java.util.List;
import com.google.gwt.view.client.ProvidesKey;
import com.google.gwt.user.client.rpc.IsSerializable;
/**
* A resource element bean. Contains part of the logic used into the TwinColumn widget
* A resource element bean. Contains part of the logic used into the TwinColumn
* widget
*
* @author Costantino Perciante at ISTI-CNR (costantino.perciante@isti.cnr.it)
*/
public class ResourceElementBean implements Comparable<ResourceElementBean>, Serializable{
public class ResourceElementBeanProfile implements Serializable, IsSerializable {
private static final long serialVersionUID = -1230871392599580669L;
private String name;
@ -23,30 +24,21 @@ public class ResourceElementBean implements Comparable<ResourceElementBean>, Ser
private String url;
private String description;
private String organizationNameDatasetParent; // the organization name in which the parent dataset was created
private ResourceElementBean parent;
private List<ResourceElementBean> children;
// to generate the GWT identifiers
private static int nextId = 0;
// identifier of this instance
private int identifierGWT;
private ResourceElementBeanProfile parent;
private List<ResourceElementBeanProfile> children;
/**
* The key provider that provides the unique ID of a bean.
* Default constructor
*/
public static final ProvidesKey<ResourceElementBean> KEY_PROVIDER = new ProvidesKey<ResourceElementBean>() {
@Override
public Object getKey(ResourceElementBean item) {
return item == null ? null : item.identifierGWT;
}
};
public ResourceElementBeanProfile() {
}
/**
* Copy constructor
*
* @param another
*/
public ResourceElementBean(ResourceElementBean another) {
public ResourceElementBeanProfile(ResourceElementBeanProfile another) {
this.name = another.name;
this.toBeAdded = another.toBeAdded;
this.fullPath = another.fullPath;
@ -58,15 +50,6 @@ public class ResourceElementBean implements Comparable<ResourceElementBean>, Ser
this.organizationNameDatasetParent = another.organizationNameDatasetParent;
}
/**
* Default constructor
*/
public ResourceElementBean(){
super();
this.identifierGWT = nextId;
nextId++;
}
/**
* @param identifier
* @param parentFolder
@ -74,14 +57,8 @@ public class ResourceElementBean implements Comparable<ResourceElementBean>, Ser
* @param movedToRight
* @param isFolder
*/
public ResourceElementBean(
ResourceElementBean parent,
String name,
boolean isFolder,
List<ResourceElementBean> children,
String fullPath) {
this.identifierGWT = nextId;
nextId++;
public ResourceElementBeanProfile(ResourceElementBeanProfile parent, String name, boolean isFolder,
List<ResourceElementBeanProfile> children, String fullPath) {
this.parent = parent;
this.name = name;
this.isFolder = isFolder;
@ -102,14 +79,11 @@ public class ResourceElementBean implements Comparable<ResourceElementBean>, Ser
* @param description
* @param organizationNameDatasetParent
*/
public ResourceElementBean(String name, boolean toBeAdded,
boolean isFolder, ResourceElementBean parent,
List<ResourceElementBean> children, String fullPath,
String originalIdInWorkspace, String mimeType, String url,
String description, String organizationNameDatasetParent) {
public ResourceElementBeanProfile(String name, boolean toBeAdded, boolean isFolder,
ResourceElementBeanProfile parent, List<ResourceElementBeanProfile> children, String fullPath,
String originalIdInWorkspace, String mimeType, String url, String description,
String organizationNameDatasetParent) {
super();
this.identifierGWT = nextId;
nextId++;
this.name = name;
this.toBeAdded = toBeAdded;
this.isFolder = isFolder;
@ -123,11 +97,11 @@ public class ResourceElementBean implements Comparable<ResourceElementBean>, Ser
this.organizationNameDatasetParent = organizationNameDatasetParent;
}
public ResourceElementBean getParent() {
public ResourceElementBeanProfile getParent() {
return parent;
}
public void setParent(ResourceElementBean parent) {
public void setParent(ResourceElementBeanProfile parent) {
this.parent = parent;
}
@ -175,8 +149,7 @@ public class ResourceElementBean implements Comparable<ResourceElementBean>, Ser
return organizationNameDatasetParent;
}
public void setOrganizationNameDatasetParent(
String organizationNameDatasetParent) {
public void setOrganizationNameDatasetParent(String organizationNameDatasetParent) {
this.organizationNameDatasetParent = organizationNameDatasetParent;
}
@ -188,11 +161,11 @@ public class ResourceElementBean implements Comparable<ResourceElementBean>, Ser
this.isFolder = isFolder;
}
public List<ResourceElementBean> getChildren() {
public List<ResourceElementBeanProfile> getChildren() {
return children;
}
public void setChildren(List<ResourceElementBean> children) {
public void setChildren(List<ResourceElementBeanProfile> children) {
this.children = children;
}
@ -220,33 +193,35 @@ public class ResourceElementBean implements Comparable<ResourceElementBean>, Ser
this.editableName = newName;
}
@Override
public boolean equals(Object o) {
boolean toReturn = false;
if (o instanceof ResourceElementBean) {
toReturn = identifierGWT == ((ResourceElementBean) o).identifierGWT;
}
return toReturn;
}
@Override
public int compareTo(ResourceElementBean o) {
int toReturn = (o == null || o.fullPath == null) ? -1 : -o.fullPath.compareTo(fullPath);
return toReturn;
}
@Override
public String toString() {
return "ResourceElementBean [identifierGWT=" + identifierGWT
+ ", name=" + name + ", editableName=" + editableName
+ ", toBeAdded=" + toBeAdded + ", isFolder=" + isFolder
+ ", fullPath=" + fullPath + ", originalIdInWorkspace="
+ originalIdInWorkspace + ", mimeType=" + mimeType + ", url="
+ url + ", description=" + description
+ ", organizationNameDatasetParent="
+ organizationNameDatasetParent + ", parent=" + parent
+ ", children number=" + (children == null ? 0 : children.size()) + "]";
StringBuilder builder = new StringBuilder();
builder.append("ResourceElementBeanProfile [name=");
builder.append(name);
builder.append(", editableName=");
builder.append(editableName);
builder.append(", toBeAdded=");
builder.append(toBeAdded);
builder.append(", isFolder=");
builder.append(isFolder);
builder.append(", fullPath=");
builder.append(fullPath);
builder.append(", originalIdInWorkspace=");
builder.append(originalIdInWorkspace);
builder.append(", mimeType=");
builder.append(mimeType);
builder.append(", url=");
builder.append(url);
builder.append(", description=");
builder.append(description);
builder.append(", organizationNameDatasetParent=");
builder.append(organizationNameDatasetParent);
builder.append(", parent=");
builder.append(parent);
builder.append(", children=");
builder.append(children);
builder.append("]");
return builder.toString();
}
}

View File

@ -51,6 +51,11 @@ public class CategoryWrapper implements Serializable{
this.description = description;
}
/**
* NB!!! DOES NOT USE THIS IN UPTATE/EDIT MODE.
*
* @return the fields for this category
*/
public List<MetadataFieldWrapper> getFieldsForThisCategory() {
return fieldsForThisCategory;
}

View File

@ -3,15 +3,14 @@ package org.gcube.portlets.widgets.mpformbuilder.shared.metadata;
import java.io.Serializable;
import java.util.List;
/**
* The Class MetaDataProfileBean.
*
* @author Francesco Mangiacrapa at ISTI-CNR francesco.mangiacrapa@isti.cnr.it
*
* Mar 3, 2022
* Mar 3, 2022
*/
public class MetaDataProfileBean implements Serializable{
public class MetaDataProfileBean implements Serializable {
/**
*
@ -25,21 +24,19 @@ public class MetaDataProfileBean implements Serializable{
/**
* Instantiates a new meta data profile bean.
*/
public MetaDataProfileBean(){
public MetaDataProfileBean() {
super();
}
/**
* Instantiates a new meta data profile bean.
*
* @param type the type
* @param title the title
* @param type the type
* @param title the title
* @param metadataFields the metadata fields
* @param categories the categories
* @param categories the categories
*/
public MetaDataProfileBean(String type,
String title,
List<MetadataFieldWrapper> metadataFields,
public MetaDataProfileBean(String type, String title, List<MetadataFieldWrapper> metadataFields,
List<CategoryWrapper> categories) {
super();
this.type = type;
@ -48,96 +45,51 @@ public class MetaDataProfileBean implements Serializable{
this.metadataFields = metadataFields;
}
/**
* Gets the type.
*
* @return the type
*/
public String getType() {
return type;
}
/**
* Sets the type.
*
* @param type the type to set
*/
public void setType(String type) {
this.type = type;
}
/**
* Gets the metadata fields.
*
* @return the metadataFields
*/
public List<MetadataFieldWrapper> getMetadataFields() {
return metadataFields;
}
/**
* Sets the metadata fields.
*
* @param metadataFields the metadataFields to set
*/
public void setMetadataFields(List<MetadataFieldWrapper> metadataFields) {
this.metadataFields = metadataFields;
public String getTitle() {
return title;
}
/**
* Gets the categories.
*
* @return the categories
*/
public List<CategoryWrapper> getCategories() {
return categories;
}
/**
* Sets the categories.
*
* @param categories the new categories
*/
public void setCategories(List<CategoryWrapper> categories) {
this.categories = categories;
public List<MetadataFieldWrapper> getMetadataFields() {
return metadataFields;
}
/**
* Gets the title.
*
* @return the title
*/
public String getTitle() {
return title;
public void setType(String type) {
this.type = type;
}
/**
* Sets the title.
*
* @param title the new title
*/
public void setTitle(String title) {
this.title = title;
}
/**
* To string.
*
* @return the string
*/
public void setCategories(List<CategoryWrapper> categories) {
this.categories = categories;
}
public void setMetadataFields(List<MetadataFieldWrapper> metadataFields) {
this.metadataFields = metadataFields;
}
@Override
public String toString() {
final int maxLen = 10;
return "MetaDataProfileBean [type="
+ type
+ ", title="
+ title
+ ", categories="
+ (categories != null ? categories.subList(0,
Math.min(categories.size(), maxLen)) : null)
+ ", metadataFields="
+ (metadataFields != null ? metadataFields.subList(0,
Math.min(metadataFields.size(), maxLen)) : null) + "]";
StringBuilder builder = new StringBuilder();
builder.append("MetaDataProfileBean [type=");
builder.append(type);
builder.append(", title=");
builder.append(title);
builder.append(", categories=");
builder.append(categories);
builder.append(", metadataFields=");
builder.append(metadataFields);
builder.append("]");
return builder.toString();
}
}

View File

@ -1,6 +1,7 @@
package org.gcube.portlets.widgets.mpformbuilder.shared.metadata;
import java.io.Serializable;
import java.util.Arrays;
import java.util.List;
/**
@ -29,7 +30,7 @@ public class MetadataFieldWrapper implements UpdatableField, Serializable {
private Integer maxOccurs = 1;
private String currentValue;
private String[] currentValues;
/**
* Instantiates a new metadata field.
@ -331,24 +332,42 @@ public class MetadataFieldWrapper implements UpdatableField, Serializable {
}
/**
* Sets the current value.
* Gets the current values.
*
* @param value the new current value
* @return the current values
*/
public void setCurrentValue(String value) {
this.currentValue = value;
public List<String> getCurrentValues() {
if (currentValues == null)
return null;
return Arrays.asList(currentValues);
}
/**
* Gets the current value.
* Sets the current values.
*
* @return the current value
* @param currentValues the new current values
*/
public String getCurrentValue() {
return currentValue;
public void setCurrentValues(String... currentValues) {
this.currentValues = currentValues;
}
/**
* Gets the current single value.
*
* @return the current single value
*/
public String getCurrentSingleValue() {
if (this.currentValues != null && this.currentValues.length > 0)
return this.currentValues[0];
return null;
}
/**
* To string.
*
* @return the string
*/
@Override
public String toString() {
StringBuilder builder = new StringBuilder();
@ -380,12 +399,10 @@ public class MetadataFieldWrapper implements UpdatableField, Serializable {
builder.append(asTag);
builder.append(", maxOccurs=");
builder.append(maxOccurs);
builder.append(", currentValue=");
builder.append(currentValue);
builder.append(", currentValues=");
builder.append(getCurrentValues());
builder.append("]");
return builder.toString();
}
}

View File

@ -1,8 +1,10 @@
package org.gcube.portlets.widgets.mpformbuilder.shared.metadata;
import java.util.List;
public interface UpdatableField {
void setCurrentValue(String value);
void setCurrentValues(String... values);
String getCurrentValue();
List<String> getCurrentValues();
}

View File

@ -7,15 +7,16 @@ import java.io.Serializable;
*
* @author Francesco Mangiacrapa at ISTI-CNR francesco.mangiacrapa@isti.cnr.it
*
* Mar 21, 2022
* Apr 13, 2023
*/
public class FilePath implements Serializable {
/**
*
*/
private static final long serialVersionUID = 5321133561716734223L;
String formFieldLabel; // is the gcubeProfileFieldName in the UCD of Geoportal
private static final long serialVersionUID = -1544808784879956412L;
private String formFieldLabel; // It is the gcubeProfileFieldName registered in the UCD of Geoportal
private String fieldName; // It is the fieldName registered in the UCD of Geoportal
/**
* Instantiates a new file paths.
@ -32,6 +33,17 @@ public class FilePath implements Serializable {
this.formFieldLabel = formFieldLabel;
}
/**
* Instantiates a new file path.
*
* @param formFieldLabel the form field label
* @param fieldName the field name
*/
public FilePath(String formFieldLabel, String fieldName) {
this.formFieldLabel = formFieldLabel;
this.fieldName = fieldName;
}
/**
* Gets the form field label.
*
@ -50,6 +62,24 @@ public class FilePath implements Serializable {
this.formFieldLabel = formFieldLabel;
}
/**
* Gets the field name.
*
* @return the field name
*/
public String getFieldName() {
return fieldName;
}
/**
* Sets the field name.
*
* @param fieldName the new field name
*/
public void setFieldName(String fieldName) {
this.fieldName = fieldName;
}
/**
* To string.
*
@ -60,6 +90,8 @@ public class FilePath implements Serializable {
StringBuilder builder = new StringBuilder();
builder.append("FilePath [formFieldLabel=");
builder.append(formFieldLabel);
builder.append(", fieldName=");
builder.append(fieldName);
builder.append("]");
return builder.toString();
}

View File

@ -117,32 +117,14 @@ public class FileUploaded implements Serializable, IsSerializable {
}
/**
* Sets the file paths.
* Sets the file path.
*
* @param filePaths the new file paths
* @param filePath the new file path
*/
public void setFilePaths(FilePath filePaths) {
this.filePath = filePaths;
public void setFilePath(FilePath filePath) {
this.filePath = filePath;
}
/**
* To string.
*
* @return the string
*/
@Override
public String toString() {
StringBuilder builder = new StringBuilder();
builder.append("FileUploaded [fileName=");
builder.append(fileName);
builder.append(", tempSystemPath=");
builder.append(tempSystemPath);
builder.append(", createdByUser=");
builder.append(createdByUser);
builder.append(", filePath=");
builder.append(filePath);
builder.append("]");
return builder.toString();
}
}

View File

@ -0,0 +1,74 @@
package org.gcube.portlets.widgets.mpformbuilder.shared.upload;
/**
* The Class FileUploadedRemote.
*
* @author Francesco Mangiacrapa at ISTI-CNR francesco.mangiacrapa@isti.cnr.it
*
* Feb 1, 2023
*/
public class FileUploadedRemote extends FileUploaded {
/**
*
*/
private static final long serialVersionUID = 2991541932545131966L;
private String url;
private String mimeType;
/**
* Instantiates a new file uploaded remote.
*/
public FileUploadedRemote() {
}
/**
* Gets the url.
*
* @return the url
*/
public String getUrl() {
return url;
}
/**
* Sets the url.
*
* @param url the new url
*/
public void setUrl(String url) {
this.url = url;
}
/**
* Gets the mime type.
*
* @return the mime type
*/
public String getMimeType() {
return mimeType;
}
/**
* Sets the mime type.
*
* @param mimeType the new mime type
*/
public void setMimeType(String mimeType) {
this.mimeType = mimeType;
}
@Override
public String toString() {
StringBuilder builder = new StringBuilder();
builder.append("FileUploadedRemote [url=");
builder.append(url);
builder.append(", mimeType=");
builder.append(mimeType);
builder.append("]");
return builder.toString();
}
}