diff --git a/gwt-unitCache/gwt-unitCache-c2c3dd5baf648a0bb199047a818be5e560f48982-0000015FC0C4A0AB b/gwt-unitCache/gwt-unitCache-c2c3dd5baf648a0bb199047a818be5e560f48982-0000015FC0C4A0AB
deleted file mode 100644
index b0193cf..0000000
Binary files a/gwt-unitCache/gwt-unitCache-c2c3dd5baf648a0bb199047a818be5e560f48982-0000015FC0C4A0AB and /dev/null differ
diff --git a/gwt-unitCache/gwt-unitCache-c2c3dd5baf648a0bb199047a818be5e560f48982-0000015FC0C686E4 b/gwt-unitCache/gwt-unitCache-c2c3dd5baf648a0bb199047a818be5e560f48982-0000015FC0C686E4
deleted file mode 100644
index 23e187d..0000000
Binary files a/gwt-unitCache/gwt-unitCache-c2c3dd5baf648a0bb199047a818be5e560f48982-0000015FC0C686E4 and /dev/null differ
diff --git a/gwt-unitCache/gwt-unitCache-c2c3dd5baf648a0bb199047a818be5e560f48982-0000015FC0C69932 b/gwt-unitCache/gwt-unitCache-c2c3dd5baf648a0bb199047a818be5e560f48982-0000015FC0C69932
deleted file mode 100644
index 265d267..0000000
Binary files a/gwt-unitCache/gwt-unitCache-c2c3dd5baf648a0bb199047a818be5e560f48982-0000015FC0C69932 and /dev/null differ
diff --git a/gwt-unitCache/gwt-unitCache-c2c3dd5baf648a0bb199047a818be5e560f48982-0000015FC0C7B46A b/gwt-unitCache/gwt-unitCache-c2c3dd5baf648a0bb199047a818be5e560f48982-0000015FC0C7B46A
deleted file mode 100644
index f363796..0000000
Binary files a/gwt-unitCache/gwt-unitCache-c2c3dd5baf648a0bb199047a818be5e560f48982-0000015FC0C7B46A and /dev/null differ
diff --git a/gwt-unitCache/gwt-unitCache-c2c3dd5baf648a0bb199047a818be5e560f48982-0000015FC0C82F49 b/gwt-unitCache/gwt-unitCache-c2c3dd5baf648a0bb199047a818be5e560f48982-0000015FC0C82F49
deleted file mode 100644
index 64c741b..0000000
Binary files a/gwt-unitCache/gwt-unitCache-c2c3dd5baf648a0bb199047a818be5e560f48982-0000015FC0C82F49 and /dev/null differ
diff --git a/gwt-unitCache/gwt-unitCache-c2c3dd5baf648a0bb199047a818be5e560f48982-0000015FC0C85FFC b/gwt-unitCache/gwt-unitCache-c2c3dd5baf648a0bb199047a818be5e560f48982-0000015FC0C85FFC
deleted file mode 100644
index 3a46b14..0000000
Binary files a/gwt-unitCache/gwt-unitCache-c2c3dd5baf648a0bb199047a818be5e560f48982-0000015FC0C85FFC and /dev/null differ
diff --git a/gwt-unitCache/gwt-unitCache-c2c3dd5baf648a0bb199047a818be5e560f48982-0000015FC0CE5C8A b/gwt-unitCache/gwt-unitCache-c2c3dd5baf648a0bb199047a818be5e560f48982-0000015FC0CE5C8A
deleted file mode 100644
index b623dbf..0000000
Binary files a/gwt-unitCache/gwt-unitCache-c2c3dd5baf648a0bb199047a818be5e560f48982-0000015FC0CE5C8A and /dev/null differ
diff --git a/gwt-unitCache/gwt-unitCache-c2c3dd5baf648a0bb199047a818be5e560f48982-0000015FC0D05F50 b/gwt-unitCache/gwt-unitCache-c2c3dd5baf648a0bb199047a818be5e560f48982-0000015FC0D05F50
deleted file mode 100644
index 1f05a4a..0000000
Binary files a/gwt-unitCache/gwt-unitCache-c2c3dd5baf648a0bb199047a818be5e560f48982-0000015FC0D05F50 and /dev/null differ
diff --git a/gwt-unitCache/gwt-unitCache-c2c3dd5baf648a0bb199047a818be5e560f48982-0000015FC0D10D96 b/gwt-unitCache/gwt-unitCache-c2c3dd5baf648a0bb199047a818be5e560f48982-0000015FC0D10D96
deleted file mode 100644
index 23ed0fd..0000000
Binary files a/gwt-unitCache/gwt-unitCache-c2c3dd5baf648a0bb199047a818be5e560f48982-0000015FC0D10D96 and /dev/null differ
diff --git a/gwt-unitCache/gwt-unitCache-c2c3dd5baf648a0bb199047a818be5e560f48982-0000015FC0D15AB2 b/gwt-unitCache/gwt-unitCache-c2c3dd5baf648a0bb199047a818be5e560f48982-0000015FC0D15AB2
deleted file mode 100644
index a73c4f6..0000000
Binary files a/gwt-unitCache/gwt-unitCache-c2c3dd5baf648a0bb199047a818be5e560f48982-0000015FC0D15AB2 and /dev/null differ
diff --git a/gwt-unitCache/gwt-unitCache-c2c3dd5baf648a0bb199047a818be5e560f48982-0000015FC0D20BB3 b/gwt-unitCache/gwt-unitCache-c2c3dd5baf648a0bb199047a818be5e560f48982-0000015FC0D20BB3
deleted file mode 100644
index 1973c79..0000000
Binary files a/gwt-unitCache/gwt-unitCache-c2c3dd5baf648a0bb199047a818be5e560f48982-0000015FC0D20BB3 and /dev/null differ
diff --git a/gwt-unitCache/gwt-unitCache-c2c3dd5baf648a0bb199047a818be5e560f48982-0000015FC0D25FBF b/gwt-unitCache/gwt-unitCache-c2c3dd5baf648a0bb199047a818be5e560f48982-0000015FC0D25FBF
deleted file mode 100644
index 52178d3..0000000
Binary files a/gwt-unitCache/gwt-unitCache-c2c3dd5baf648a0bb199047a818be5e560f48982-0000015FC0D25FBF and /dev/null differ
diff --git a/gwt-unitCache/gwt-unitCache-c2c3dd5baf648a0bb199047a818be5e560f48982-0000015FC0D531A8 b/gwt-unitCache/gwt-unitCache-c2c3dd5baf648a0bb199047a818be5e560f48982-0000015FC0D531A8
deleted file mode 100644
index 0981a11..0000000
Binary files a/gwt-unitCache/gwt-unitCache-c2c3dd5baf648a0bb199047a818be5e560f48982-0000015FC0D531A8 and /dev/null differ
diff --git a/gwt-unitCache/gwt-unitCache-c2c3dd5baf648a0bb199047a818be5e560f48982-0000015FC0D537D8 b/gwt-unitCache/gwt-unitCache-c2c3dd5baf648a0bb199047a818be5e560f48982-0000015FC0D537D8
deleted file mode 100644
index c6378fe..0000000
Binary files a/gwt-unitCache/gwt-unitCache-c2c3dd5baf648a0bb199047a818be5e560f48982-0000015FC0D537D8 and /dev/null differ
diff --git a/gwt-unitCache/gwt-unitCache-c2c3dd5baf648a0bb199047a818be5e560f48982-0000015FC0D6C73C b/gwt-unitCache/gwt-unitCache-c2c3dd5baf648a0bb199047a818be5e560f48982-0000015FC0D6C73C
deleted file mode 100644
index 25526cf..0000000
Binary files a/gwt-unitCache/gwt-unitCache-c2c3dd5baf648a0bb199047a818be5e560f48982-0000015FC0D6C73C and /dev/null differ
diff --git a/gwt-unitCache/gwt-unitCache-c2c3dd5baf648a0bb199047a818be5e560f48982-0000015FC0D85E64 b/gwt-unitCache/gwt-unitCache-c2c3dd5baf648a0bb199047a818be5e560f48982-0000015FC0D85E64
deleted file mode 100644
index 25020ba..0000000
Binary files a/gwt-unitCache/gwt-unitCache-c2c3dd5baf648a0bb199047a818be5e560f48982-0000015FC0D85E64 and /dev/null differ
diff --git a/gwt-unitCache/gwt-unitCache-c2c3dd5baf648a0bb199047a818be5e560f48982-0000015FC0D984F4 b/gwt-unitCache/gwt-unitCache-c2c3dd5baf648a0bb199047a818be5e560f48982-0000015FC0D984F4
deleted file mode 100644
index 0416831..0000000
Binary files a/gwt-unitCache/gwt-unitCache-c2c3dd5baf648a0bb199047a818be5e560f48982-0000015FC0D984F4 and /dev/null differ
diff --git a/gwt-unitCache/gwt-unitCache-c2c3dd5baf648a0bb199047a818be5e560f48982-0000015FC0DA3E1D b/gwt-unitCache/gwt-unitCache-c2c3dd5baf648a0bb199047a818be5e560f48982-0000015FC0DA3E1D
deleted file mode 100644
index e99186b..0000000
Binary files a/gwt-unitCache/gwt-unitCache-c2c3dd5baf648a0bb199047a818be5e560f48982-0000015FC0DA3E1D and /dev/null differ
diff --git a/gwt-unitCache/gwt-unitCache-c2c3dd5baf648a0bb199047a818be5e560f48982-0000015FC0DA9F5C b/gwt-unitCache/gwt-unitCache-c2c3dd5baf648a0bb199047a818be5e560f48982-0000015FC0DA9F5C
deleted file mode 100644
index d9fabe2..0000000
Binary files a/gwt-unitCache/gwt-unitCache-c2c3dd5baf648a0bb199047a818be5e560f48982-0000015FC0DA9F5C and /dev/null differ
diff --git a/gwt-unitCache/gwt-unitCache-c2c3dd5baf648a0bb199047a818be5e560f48982-0000015FC0DBB626 b/gwt-unitCache/gwt-unitCache-c2c3dd5baf648a0bb199047a818be5e560f48982-0000015FC0DBB626
deleted file mode 100644
index ea221dd..0000000
Binary files a/gwt-unitCache/gwt-unitCache-c2c3dd5baf648a0bb199047a818be5e560f48982-0000015FC0DBB626 and /dev/null differ
diff --git a/gwt-unitCache/gwt-unitCache-c2c3dd5baf648a0bb199047a818be5e560f48982-0000015FC0DC2131 b/gwt-unitCache/gwt-unitCache-c2c3dd5baf648a0bb199047a818be5e560f48982-0000015FC0DC2131
deleted file mode 100644
index 419b91c..0000000
Binary files a/gwt-unitCache/gwt-unitCache-c2c3dd5baf648a0bb199047a818be5e560f48982-0000015FC0DC2131 and /dev/null differ
diff --git a/gwt-unitCache/gwt-unitCache-c2c3dd5baf648a0bb199047a818be5e560f48982-0000015FC0DEB053 b/gwt-unitCache/gwt-unitCache-c2c3dd5baf648a0bb199047a818be5e560f48982-0000015FC0DEB053
deleted file mode 100644
index 7eccad4..0000000
Binary files a/gwt-unitCache/gwt-unitCache-c2c3dd5baf648a0bb199047a818be5e560f48982-0000015FC0DEB053 and /dev/null differ
diff --git a/gwt-unitCache/gwt-unitCache-c2c3dd5baf648a0bb199047a818be5e560f48982-0000015FC0DEFD00 b/gwt-unitCache/gwt-unitCache-c2c3dd5baf648a0bb199047a818be5e560f48982-0000015FC0DEFD00
deleted file mode 100644
index 3fa814d..0000000
Binary files a/gwt-unitCache/gwt-unitCache-c2c3dd5baf648a0bb199047a818be5e560f48982-0000015FC0DEFD00 and /dev/null differ
diff --git a/gwt-unitCache/gwt-unitCache-c2c3dd5baf648a0bb199047a818be5e560f48982-0000015FC0E3236E b/gwt-unitCache/gwt-unitCache-c2c3dd5baf648a0bb199047a818be5e560f48982-0000015FC0E3236E
deleted file mode 100644
index b4cb400..0000000
Binary files a/gwt-unitCache/gwt-unitCache-c2c3dd5baf648a0bb199047a818be5e560f48982-0000015FC0E3236E and /dev/null differ
diff --git a/gwt-unitCache/gwt-unitCache-c2c3dd5baf648a0bb199047a818be5e560f48982-0000015FC0E44EB3 b/gwt-unitCache/gwt-unitCache-c2c3dd5baf648a0bb199047a818be5e560f48982-0000015FC0E44EB3
deleted file mode 100644
index 8eb3e54..0000000
Binary files a/gwt-unitCache/gwt-unitCache-c2c3dd5baf648a0bb199047a818be5e560f48982-0000015FC0E44EB3 and /dev/null differ
diff --git a/gwt-unitCache/gwt-unitCache-c2c3dd5baf648a0bb199047a818be5e560f48982-0000015FC0E4F31C b/gwt-unitCache/gwt-unitCache-c2c3dd5baf648a0bb199047a818be5e560f48982-0000015FC0E4F31C
deleted file mode 100644
index 095f87a..0000000
Binary files a/gwt-unitCache/gwt-unitCache-c2c3dd5baf648a0bb199047a818be5e560f48982-0000015FC0E4F31C and /dev/null differ
diff --git a/gwt-unitCache/gwt-unitCache-c2c3dd5baf648a0bb199047a818be5e560f48982-0000015FC0E5D5DD b/gwt-unitCache/gwt-unitCache-c2c3dd5baf648a0bb199047a818be5e560f48982-0000015FC0E5D5DD
deleted file mode 100644
index b938fac..0000000
Binary files a/gwt-unitCache/gwt-unitCache-c2c3dd5baf648a0bb199047a818be5e560f48982-0000015FC0E5D5DD and /dev/null differ
diff --git a/gwt-unitCache/gwt-unitCache-c2c3dd5baf648a0bb199047a818be5e560f48982-0000015FC0E654EA b/gwt-unitCache/gwt-unitCache-c2c3dd5baf648a0bb199047a818be5e560f48982-0000015FC0E654EA
deleted file mode 100644
index c3bc9bf..0000000
Binary files a/gwt-unitCache/gwt-unitCache-c2c3dd5baf648a0bb199047a818be5e560f48982-0000015FC0E654EA and /dev/null differ
diff --git a/gwt-unitCache/gwt-unitCache-c2c3dd5baf648a0bb199047a818be5e560f48982-0000015FC0E8002C b/gwt-unitCache/gwt-unitCache-c2c3dd5baf648a0bb199047a818be5e560f48982-0000015FC0E8002C
deleted file mode 100644
index 3127be7..0000000
Binary files a/gwt-unitCache/gwt-unitCache-c2c3dd5baf648a0bb199047a818be5e560f48982-0000015FC0E8002C and /dev/null differ
diff --git a/gwt-unitCache/gwt-unitCache-c2c3dd5baf648a0bb199047a818be5e560f48982-0000015FC0C49E69 b/gwt-unitCache/gwt-unitCache-c2c3dd5baf648a0bb199047a818be5e560f48982-0000015FD91E26AF
similarity index 94%
rename from gwt-unitCache/gwt-unitCache-c2c3dd5baf648a0bb199047a818be5e560f48982-0000015FC0C49E69
rename to gwt-unitCache/gwt-unitCache-c2c3dd5baf648a0bb199047a818be5e560f48982-0000015FD91E26AF
index 277659c..03e8b31 100644
Binary files a/gwt-unitCache/gwt-unitCache-c2c3dd5baf648a0bb199047a818be5e560f48982-0000015FC0C49E69 and b/gwt-unitCache/gwt-unitCache-c2c3dd5baf648a0bb199047a818be5e560f48982-0000015FD91E26AF differ
diff --git a/gwt-unitCache/gwt-unitCache-c2c3dd5baf648a0bb199047a818be5e560f48982-0000015FD91E29E0 b/gwt-unitCache/gwt-unitCache-c2c3dd5baf648a0bb199047a818be5e560f48982-0000015FD91E29E0
new file mode 100644
index 0000000..2be28ea
Binary files /dev/null and b/gwt-unitCache/gwt-unitCache-c2c3dd5baf648a0bb199047a818be5e560f48982-0000015FD91E29E0 differ
diff --git a/gwt-unitCache/gwt-unitCache-c2c3dd5baf648a0bb199047a818be5e560f48982-0000015FD922F681 b/gwt-unitCache/gwt-unitCache-c2c3dd5baf648a0bb199047a818be5e560f48982-0000015FD922F681
new file mode 100644
index 0000000..8e47290
Binary files /dev/null and b/gwt-unitCache/gwt-unitCache-c2c3dd5baf648a0bb199047a818be5e560f48982-0000015FD922F681 differ
diff --git a/gwt-unitCache/gwt-unitCache-c2c3dd5baf648a0bb199047a818be5e560f48982-0000015FD923F173 b/gwt-unitCache/gwt-unitCache-c2c3dd5baf648a0bb199047a818be5e560f48982-0000015FD923F173
new file mode 100644
index 0000000..5273f50
Binary files /dev/null and b/gwt-unitCache/gwt-unitCache-c2c3dd5baf648a0bb199047a818be5e560f48982-0000015FD923F173 differ
diff --git a/gwt-unitCache/gwt-unitCache-c2c3dd5baf648a0bb199047a818be5e560f48982-0000015FD924CC71 b/gwt-unitCache/gwt-unitCache-c2c3dd5baf648a0bb199047a818be5e560f48982-0000015FD924CC71
new file mode 100644
index 0000000..eb1fd79
Binary files /dev/null and b/gwt-unitCache/gwt-unitCache-c2c3dd5baf648a0bb199047a818be5e560f48982-0000015FD924CC71 differ
diff --git a/gwt-unitCache/gwt-unitCache-c2c3dd5baf648a0bb199047a818be5e560f48982-0000015FC0DEAEFF b/gwt-unitCache/gwt-unitCache-c2c3dd5baf648a0bb199047a818be5e560f48982-0000015FD9271A25
similarity index 98%
rename from gwt-unitCache/gwt-unitCache-c2c3dd5baf648a0bb199047a818be5e560f48982-0000015FC0DEAEFF
rename to gwt-unitCache/gwt-unitCache-c2c3dd5baf648a0bb199047a818be5e560f48982-0000015FD9271A25
index 937cd40..87e5e63 100644
Binary files a/gwt-unitCache/gwt-unitCache-c2c3dd5baf648a0bb199047a818be5e560f48982-0000015FC0DEAEFF and b/gwt-unitCache/gwt-unitCache-c2c3dd5baf648a0bb199047a818be5e560f48982-0000015FD9271A25 differ
diff --git a/gwt-unitCache/gwt-unitCache-c2c3dd5baf648a0bb199047a818be5e560f48982-0000015FC0DEB01D b/gwt-unitCache/gwt-unitCache-c2c3dd5baf648a0bb199047a818be5e560f48982-0000015FD9271BA1
similarity index 95%
rename from gwt-unitCache/gwt-unitCache-c2c3dd5baf648a0bb199047a818be5e560f48982-0000015FC0DEB01D
rename to gwt-unitCache/gwt-unitCache-c2c3dd5baf648a0bb199047a818be5e560f48982-0000015FD9271BA1
index da6ac56..50804cf 100644
Binary files a/gwt-unitCache/gwt-unitCache-c2c3dd5baf648a0bb199047a818be5e560f48982-0000015FC0DEB01D and b/gwt-unitCache/gwt-unitCache-c2c3dd5baf648a0bb199047a818be5e560f48982-0000015FD9271BA1 differ
diff --git a/pom.xml b/pom.xml
index 036fb7f..fa146d1 100644
--- a/pom.xml
+++ b/pom.xml
@@ -112,18 +112,18 @@
org.gcube.core
common-scope-maps
- provided
+ compile
org.gcube.core
common-encryption
- provided
+ compile
org.gcube.common
authorization-client
- provided
+ compile
junit
@@ -234,4 +234,5 @@
+ war
diff --git a/src/main/java/org/gcube/datacatalogue/grsf_manage_widget/client/GRSFManageWidgetService.java b/src/main/java/org/gcube/datacatalogue/grsf_manage_widget/client/GRSFManageWidgetService.java
index d087a63..c5b112a 100644
--- a/src/main/java/org/gcube/datacatalogue/grsf_manage_widget/client/GRSFManageWidgetService.java
+++ b/src/main/java/org/gcube/datacatalogue/grsf_manage_widget/client/GRSFManageWidgetService.java
@@ -14,7 +14,6 @@ public interface GRSFManageWidgetService extends RemoteService {
*/
boolean isAdminUser();
-
/**
* Get the product bean from the product identifier
* @param identifier
@@ -26,6 +25,22 @@ public interface GRSFManageWidgetService extends RemoteService {
/**
* Notify product update
*/
- String notifyProductUpdate(ManageProductBean bean);
+ String notifyProductUpdate(ManageProductBean bean) throws Exception;
+
+ /**
+ * Check that a record with such semantic identifier exists
+ * @param semanticIdentifier
+ * @return true or false
+ */
+ boolean checkSemanticIdentifierExists(String semanticIdentifier) throws Exception;
+ /**
+ * Check that a record with such semantic identifier exists in a given domain
+ * @param semanticIdentifier
+ * @param domain
+ * @return
+ * @throws Exception
+ */
+ boolean checkSemanticIdentifierExistsInDomain(String semanticIdentifier, String domain) throws Exception;
+
}
diff --git a/src/main/java/org/gcube/datacatalogue/grsf_manage_widget/client/GRSFManageWidgetServiceAsync.java b/src/main/java/org/gcube/datacatalogue/grsf_manage_widget/client/GRSFManageWidgetServiceAsync.java
index bd0885b..d0fc774 100644
--- a/src/main/java/org/gcube/datacatalogue/grsf_manage_widget/client/GRSFManageWidgetServiceAsync.java
+++ b/src/main/java/org/gcube/datacatalogue/grsf_manage_widget/client/GRSFManageWidgetServiceAsync.java
@@ -21,4 +21,10 @@ public interface GRSFManageWidgetServiceAsync {
void isAdminUser(AsyncCallback callback);
+ void checkSemanticIdentifierExists(String semanticIdentifier,
+ AsyncCallback callback);
+
+ void checkSemanticIdentifierExistsInDomain(String semanticIdentifier,
+ String domain, AsyncCallback callback);
+
}
diff --git a/src/main/java/org/gcube/datacatalogue/grsf_manage_widget/client/view/ManageProductWidget.java b/src/main/java/org/gcube/datacatalogue/grsf_manage_widget/client/view/ManageProductWidget.java
index be6064a..69691a8 100644
--- a/src/main/java/org/gcube/datacatalogue/grsf_manage_widget/client/view/ManageProductWidget.java
+++ b/src/main/java/org/gcube/datacatalogue/grsf_manage_widget/client/view/ManageProductWidget.java
@@ -142,7 +142,10 @@ public class ManageProductWidget extends Composite{
// the objects to be managed
private ManageProductBean bean;
private final static List STATUS = new ArrayList(Arrays.asList(Status.values()));
-
+
+ // similar records and to connect widgets
+ private SimilarGRSFRecordWidget similarRecordPanel;
+ private ConnectToWidget connectWidget;
/**
* Build a ManageProduct widget for the product with the specified id.
@@ -184,8 +187,6 @@ public class ManageProductWidget extends Composite{
@Override
public void onSuccess(Boolean result) {
- GWT.log("Get " + result);
-
if(!result){
showInfo(NO_ADMIN_ROLE, AlertType.ERROR);
@@ -205,7 +206,6 @@ public class ManageProductWidget extends Composite{
@Override
public void onSuccess(ManageProductBean resBean) {
- // GWT.log("Get " + resBean);
if(resBean == null){
showInfo(ERROR_ON_RETRIEVING_BEAN, AlertType.ERROR);
@@ -230,10 +230,12 @@ public class ManageProductWidget extends Composite{
// manage similar GRSF records, if any
List availableGRSFSimilarRecords = bean.getSimilarGrsfRecords();
- panelForSimilarGRSFRecords.add(new SimilarGRSFRecordWidget(availableGRSFSimilarRecords));
+ similarRecordPanel = new SimilarGRSFRecordWidget(availableGRSFSimilarRecords, service);
+ panelForSimilarGRSFRecords.add(similarRecordPanel);
// prepare "connect" panel
- panelForConnectOtherRecords.add(new ConnectToWidget());
+ connectWidget = new ConnectToWidget(bean, service);
+ panelForConnectOtherRecords.add(connectWidget);
// check if we need to show more
if(bean.getExtrasIfAvailable() != null && !bean.getExtrasIfAvailable().isEmpty())
@@ -338,6 +340,10 @@ public class ManageProductWidget extends Composite{
cancelButton.setEnabled(false);
confirmButton.setEnabled(false);
loaderIcon.setVisible(true);
+
+ // update similar records and to connect
+ bean.setConnectTo(connectWidget.getConnectList());
+ bean.setSimilarGrsfRecords(similarRecordPanel.getSimilarRecords());
// set new values
bean.setAnnotation(new HTML(annotationArea.getText().trim()).getText());
@@ -378,7 +384,6 @@ public class ManageProductWidget extends Composite{
@UiHandler("cancelButton")
void onCancelButton(ClickEvent ce){
- // just hide the panel
manageProductModal.hide();
}
diff --git a/src/main/java/org/gcube/datacatalogue/grsf_manage_widget/client/view/ManageProductWidget.ui.xml b/src/main/java/org/gcube/datacatalogue/grsf_manage_widget/client/view/ManageProductWidget.ui.xml
index d32632b..356c7eb 100644
--- a/src/main/java/org/gcube/datacatalogue/grsf_manage_widget/client/view/ManageProductWidget.ui.xml
+++ b/src/main/java/org/gcube/datacatalogue/grsf_manage_widget/client/view/ManageProductWidget.ui.xml
@@ -106,7 +106,7 @@
Suggest connections with other records:
-
+
diff --git a/src/main/java/org/gcube/datacatalogue/grsf_manage_widget/client/view/subwidgets/ConnectToWidget.java b/src/main/java/org/gcube/datacatalogue/grsf_manage_widget/client/view/subwidgets/ConnectToWidget.java
index e630a68..ad5e107 100644
--- a/src/main/java/org/gcube/datacatalogue/grsf_manage_widget/client/view/subwidgets/ConnectToWidget.java
+++ b/src/main/java/org/gcube/datacatalogue/grsf_manage_widget/client/view/subwidgets/ConnectToWidget.java
@@ -1,8 +1,32 @@
package org.gcube.datacatalogue.grsf_manage_widget.client.view.subwidgets;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+import org.gcube.datacatalogue.grsf_manage_widget.client.GRSFManageWidgetServiceAsync;
+import org.gcube.datacatalogue.grsf_manage_widget.shared.ConnectBean;
+import org.gcube.datacatalogue.grsf_manage_widget.shared.ManageProductBean;
+
+import com.github.gwtbootstrap.client.ui.Button;
+import com.github.gwtbootstrap.client.ui.Paragraph;
+import com.github.gwtbootstrap.client.ui.TextBox;
+import com.github.gwtbootstrap.client.ui.constants.IconType;
import com.google.gwt.core.client.GWT;
+import com.google.gwt.dom.client.Style.Float;
+import com.google.gwt.dom.client.Style.Unit;
+import com.google.gwt.event.dom.client.ChangeEvent;
+import com.google.gwt.event.dom.client.ChangeHandler;
+import com.google.gwt.event.dom.client.ClickEvent;
+import com.google.gwt.event.dom.client.ClickHandler;
+import com.google.gwt.event.dom.client.KeyPressEvent;
+import com.google.gwt.event.dom.client.KeyPressHandler;
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.HTML;
+import com.google.gwt.user.client.ui.HorizontalPanel;
+import com.google.gwt.user.client.ui.VerticalPanel;
import com.google.gwt.user.client.ui.Widget;
public class ConnectToWidget extends Composite{
@@ -13,9 +37,130 @@ public class ConnectToWidget extends Composite{
interface ConnectToWidgetUiBinder extends UiBinder {
}
- public ConnectToWidget() {
+ @UiField
+ VerticalPanel connectPanel;
+
+ @UiField
+ Button suggestRecord;
+
+ private GRSFManageWidgetServiceAsync service;
+ private List connectList = new ArrayList(0);
+
+ public ConnectToWidget(final ManageProductBean bean, GRSFManageWidgetServiceAsync service) {
initWidget(uiBinder.createAndBindUi(this));
+
+ this.service = service;
+
+ String acceptedDomain = bean.getGrsfDomain().equalsIgnoreCase("stock") ? "Fishery" : "Stock";
+ suggestRecord.setTitle("Connect this " + bean.getGrsfDomain() + " record to a " + acceptedDomain + " record ");
+ suggestRecord.setIcon(IconType.PLUS_SIGN);
+ suggestRecord.getElement().getStyle().setFloat(Float.RIGHT);
+
+ // add handler
+ suggestRecord.addClickHandler(new ClickHandler() {
+
+ @Override
+ public void onClick(ClickEvent arg0) {
+
+ ConnectBean cb = new ConnectBean();
+ cb.setSourceDomain(bean.getGrsfDomain());
+ Widget w = buildWidgetConnect(cb);
+ connectList.add(new Pair(cb, w));
+ connectPanel.add(w);
+
+ }
+ });
+
+ }
+
+ /**
+ * Builds up a widget for connecting records.
+ * @param w the widget
+ * @param cb the connectBean.
+ */
+ private Widget buildWidgetConnect(final ConnectBean cb){
+
+ VerticalPanel main = new VerticalPanel();
+ main.setWidth("90%");
+ HorizontalPanel hp = new HorizontalPanel();
+ hp.setWidth("100%");
+
+ VerticalPanel vpLeft = new VerticalPanel();
+ vpLeft.getElement().getStyle().setMarginLeft(15, Unit.PX);
+ vpLeft.setWidth("80%");
+ Paragraph semanticIdentifier = new Paragraph("Semantic Identifier:");
+ final TextBox box = new TextBox();
+ box.addKeyPressHandler(new KeyPressHandler() {
+
+ @Override
+ public void onKeyPress(KeyPressEvent event) {
+
+ String currentText = box.getText().trim();
+ GWT.log("Text changed to " + currentText);
+ cb.setDestSemanticIdentifier(currentText);
+
+ }
+ });
+ box.addChangeHandler(new ChangeHandler() {
+
+ @Override
+ public void onChange(ChangeEvent event) {
+
+ String currentText = box.getText().trim();
+ GWT.log("Text changed to " + currentText);
+ cb.setDestSemanticIdentifier(currentText);
+
+ }
+ });
+ box.setWidth("512px");
+ box.setPlaceholder("Insert the Semantic Identifier of the record to connect");
+
+ vpLeft.add(semanticIdentifier);
+ vpLeft.add(box);
+
+ VerticalPanel vpRight = new VerticalPanel();
+ vpRight.setWidth("20%");
+
+ Button removeExtra = new Button();
+ removeExtra.setIcon(IconType.MINUS);
+ removeExtra.setTitle("Remove this connection");
+ removeExtra.addClickHandler(new ClickHandler() {
+
+ @Override
+ public void onClick(ClickEvent arg0) {
+
+ // remove this object from the pairs list
+ Iterator iterator = connectList.iterator();
+ while (iterator.hasNext()) {
+ Pair pair = (Pair) iterator
+ .next();
+ if(pair.getO().equals(cb)){
+ pair.getW().removeFromParent();
+ iterator.remove();
+ }
+ }
+ }
+ });
+ vpRight.getElement().getStyle().setFloat(Float.RIGHT);
+ vpRight.add(removeExtra);
+ hp.add(vpLeft);
+ hp.add(vpRight);
+ HTML separator = new HTML("
");
+ connectPanel.add(separator);
+ main.add(hp);
+ main.add(separator);
+ return main;
}
+ public List getConnectList() {
+
+ List toReturn = new ArrayList(0);
+
+ for (Pair p : connectList) {
+ toReturn.add((ConnectBean) p.getO());
+ }
+
+ return toReturn;
+ }
}
diff --git a/src/main/java/org/gcube/datacatalogue/grsf_manage_widget/client/view/subwidgets/ConnectToWidget.ui.xml b/src/main/java/org/gcube/datacatalogue/grsf_manage_widget/client/view/subwidgets/ConnectToWidget.ui.xml
index 96a50cd..8cd4bd1 100644
--- a/src/main/java/org/gcube/datacatalogue/grsf_manage_widget/client/view/subwidgets/ConnectToWidget.ui.xml
+++ b/src/main/java/org/gcube/datacatalogue/grsf_manage_widget/client/view/subwidgets/ConnectToWidget.ui.xml
@@ -1,12 +1,9 @@
-
- .important {
- font-weight: bold;
- }
-
-
-
+ xmlns:g="urn:import:com.google.gwt.user.client.ui" xmlns:b="urn:import:com.github.gwtbootstrap.client.ui">
+
+
+
+
\ No newline at end of file
diff --git a/src/main/java/org/gcube/datacatalogue/grsf_manage_widget/client/view/subwidgets/Pair.java b/src/main/java/org/gcube/datacatalogue/grsf_manage_widget/client/view/subwidgets/Pair.java
new file mode 100644
index 0000000..2d5b538
--- /dev/null
+++ b/src/main/java/org/gcube/datacatalogue/grsf_manage_widget/client/view/subwidgets/Pair.java
@@ -0,0 +1,25 @@
+package org.gcube.datacatalogue.grsf_manage_widget.client.view.subwidgets;
+
+import com.google.gwt.user.client.ui.Widget;
+
+
+/**
+ * A class of pair: a widget and an object
+ * @author Costantino Perciante at ISTI-CNR (costantino.perciante@isti.cnr.it)
+ */
+public class Pair {
+ private Object o;
+ private Widget w;
+ public Pair(Object o, Widget w){
+ this.o = o;
+ this.w = w;
+ }
+ public Object getO(){ return o; }
+ public Widget getW(){ return w; }
+ public void setO(Object o){ this.o = o; }
+ public void setW(Widget w){ this.w = w; }
+ @Override
+ public String toString() {
+ return "Pair [o=" + o + ", w=" + w + "]";
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/org/gcube/datacatalogue/grsf_manage_widget/client/view/subwidgets/SimilarGRSFRecordWidget.java b/src/main/java/org/gcube/datacatalogue/grsf_manage_widget/client/view/subwidgets/SimilarGRSFRecordWidget.java
index 721e3af..b571829 100644
--- a/src/main/java/org/gcube/datacatalogue/grsf_manage_widget/client/view/subwidgets/SimilarGRSFRecordWidget.java
+++ b/src/main/java/org/gcube/datacatalogue/grsf_manage_widget/client/view/subwidgets/SimilarGRSFRecordWidget.java
@@ -4,6 +4,7 @@ import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
+import org.gcube.datacatalogue.grsf_manage_widget.client.GRSFManageWidgetServiceAsync;
import org.gcube.datacatalogue.grsf_manage_widget.shared.SimilarGRSFRecord;
import com.github.gwtbootstrap.client.ui.Button;
@@ -15,8 +16,12 @@ import com.google.gwt.core.client.GWT;
import com.google.gwt.dom.client.Style.Float;
import com.google.gwt.dom.client.Style.FontWeight;
import com.google.gwt.dom.client.Style.Unit;
+import com.google.gwt.event.dom.client.ChangeEvent;
+import com.google.gwt.event.dom.client.ChangeHandler;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
+import com.google.gwt.event.dom.client.KeyPressEvent;
+import com.google.gwt.event.dom.client.KeyPressHandler;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.user.client.ui.Anchor;
@@ -44,33 +49,19 @@ public class SimilarGRSFRecordWidget extends Composite {
@UiField
Button addSimilarRecord;
- /**
- * Class of Pairs
- * @author Costantino Perciante at ISTI-CNR (costantino.perciante@isti.cnr.it)
- */
- class Pair {
- private SimilarGRSFRecord s;
- private Widget w;
- public Pair(SimilarGRSFRecord s, Widget w){
- this.s = s;
- this.w = w;
- }
- public SimilarGRSFRecord getS(){ return s; }
- public Widget getW(){ return w; }
- public void setS(SimilarGRSFRecord s){ this.s = s; }
- public void setW(Widget w){ this.w = w; }
- }
-
- protected List extraSimilarRecordsList = new ArrayList(0);
+ private List extraSimilarRecordsList = new ArrayList(0);
private List availableGRSFSimilarRecords;
+ private GRSFManageWidgetServiceAsync service;
+
/**
* Get widget for available similar grsf records
* @param availableGRSFSimilarRecords
+ * @param service
*/
- public SimilarGRSFRecordWidget(List availableGRSFSimilarRecords) {
+ public SimilarGRSFRecordWidget(List availableGRSFSimilarRecords, GRSFManageWidgetServiceAsync service) {
initWidget(uiBinder.createAndBindUi(this));
-
+ this.service = service;
this.availableGRSFSimilarRecords = availableGRSFSimilarRecords;
addSimilarRecord.getElement().getStyle().setFloat(Float.RIGHT);
@@ -85,7 +76,7 @@ public class SimilarGRSFRecordWidget extends Composite {
// manage the "suggest button"
addSimilarRecord.setIcon(IconType.PLUS_SIGN);
addSimilarRecord.getElement().getStyle().setFloat(Float.RIGHT);
- addSimilarRecord.setTitle("Suggest a Similar Record by using its GRSF UUID");
+ addSimilarRecord.setTitle("Suggest a Similar Record by using its GRSF Semantic Identifier");
// add handler
addSimilarRecord.addClickHandler(new ClickHandler() {
@@ -126,7 +117,7 @@ public class SimilarGRSFRecordWidget extends Composite {
description.setTitle("Description: " + similarGRSFRecord.getDescription());
leftPanel.add(description);
}
- Paragraph semanticIdentifier = new Paragraph("Semantic Identifier " +
+ Paragraph semanticIdentifier = new Paragraph("Semantic Identifier: " +
similarGRSFRecord.getSemanticIdentifier());
leftPanel.add(semanticIdentifier);
@@ -182,11 +173,32 @@ public class SimilarGRSFRecordWidget extends Composite {
vpLeft.getElement().getStyle().setMarginLeft(15, Unit.PX);
vpLeft.setWidth("80%");
Paragraph semanticIdentifier = new Paragraph("Semantic Identifier:");
- TextBox box = new TextBox();
- box.setWidth("70%");
+ final TextBox box = new TextBox();
+ box.addKeyPressHandler(new KeyPressHandler() {
+
+ @Override
+ public void onKeyPress(KeyPressEvent event) {
+
+ String currentText = box.getText().trim();
+ GWT.log("Text changed to " + currentText);
+ s.setSemanticIdentifier(currentText);
+
+ }
+ });
+ box.addChangeHandler(new ChangeHandler() {
+
+ @Override
+ public void onChange(ChangeEvent event) {
+
+ String currentText = box.getText().trim();
+ GWT.log("Text changed to " + currentText);
+ s.setSemanticIdentifier(currentText);
+
+ }
+ });
+ box.setWidth("511px");
box.setPlaceholder("Insert the Semantic Identifier of the suggested record");
- // TODO add handler for remote GRSF semantic id check
vpLeft.add(semanticIdentifier);
vpLeft.add(box);
@@ -221,9 +233,9 @@ public class SimilarGRSFRecordWidget extends Composite {
// remove this object from the pairs list
Iterator iterator = extraSimilarRecordsList.iterator();
while (iterator.hasNext()) {
- SimilarGRSFRecordWidget.Pair pair = (SimilarGRSFRecordWidget.Pair) iterator
+ Pair pair = (Pair) iterator
.next();
- if(pair.getS().equals(s)){
+ if(pair.getO().equals(s)){
pair.getW().removeFromParent();
iterator.remove();
}
@@ -246,19 +258,17 @@ public class SimilarGRSFRecordWidget extends Composite {
* Get the whole of similar records
* @return
*/
- public List getSuggestedRecords(){
+ public List getSimilarRecords(){
if(availableGRSFSimilarRecords == null)
availableGRSFSimilarRecords = new ArrayList();
for (Pair p : extraSimilarRecordsList) {
- availableGRSFSimilarRecords.add(p.getS());
+ availableGRSFSimilarRecords.add((SimilarGRSFRecord) p.getO());
}
return availableGRSFSimilarRecords;
}
-
-
}
diff --git a/src/main/java/org/gcube/datacatalogue/grsf_manage_widget/client/view/subwidgets/SourceWidget.ui.xml b/src/main/java/org/gcube/datacatalogue/grsf_manage_widget/client/view/subwidgets/SourceWidget.ui.xml
index 316e4e7..db15194 100644
--- a/src/main/java/org/gcube/datacatalogue/grsf_manage_widget/client/view/subwidgets/SourceWidget.ui.xml
+++ b/src/main/java/org/gcube/datacatalogue/grsf_manage_widget/client/view/subwidgets/SourceWidget.ui.xml
@@ -1,11 +1,6 @@
-
- .important {
- font-weight: bold;
- }
-
diff --git a/src/main/java/org/gcube/datacatalogue/grsf_manage_widget/server/manage/GRSFNotificationService.java b/src/main/java/org/gcube/datacatalogue/grsf_manage_widget/server/manage/GRSFNotificationService.java
index 61d703f..b6e6c95 100644
--- a/src/main/java/org/gcube/datacatalogue/grsf_manage_widget/server/manage/GRSFNotificationService.java
+++ b/src/main/java/org/gcube/datacatalogue/grsf_manage_widget/server/manage/GRSFNotificationService.java
@@ -149,9 +149,9 @@ public class GRSFNotificationService extends RemoteServiceServlet implements GRS
similarRecords.add(Utils.similarGRSFRecordFromJson(similarGRSFRecord));
}
}
-
+
logger.debug("SimilarGRSFRecords are " + similarRecords);
-
+
// Get sources
List resources = record.getResources();
List sources = new ArrayList(3);
@@ -221,4 +221,40 @@ public class GRSFNotificationService extends RemoteServiceServlet implements GRS
return false;
}
+ @Override
+ public boolean checkSemanticIdentifierExists(String semanticIdentifier)
+ throws Exception {
+
+ return getDataset(semanticIdentifier) != null;
+ }
+
+ @Override
+ public boolean checkSemanticIdentifierExistsInDomain(String semanticIdentifier, String domain)
+ throws Exception {
+
+
+ CkanDataset dataset = getDataset(semanticIdentifier);
+
+ // look for the right domain this time
+ List extrasAsPairs = dataset.getExtras();
+
+ for (CkanPair ckanPair : extrasAsPairs) {
+ if(ckanPair.getKey().contains(Constants.DOMAIN_CUSTOM_KEY)){
+ return ckanPair.getValue().equalsIgnoreCase(domain);
+ }
+ }
+
+ return false;
+ }
+
+ private CkanDataset getDataset(String semanticIdentifier) throws Exception{
+
+ String scopePerCurrentUrl = Utils.getScopeFromClientUrl(getThreadLocalRequest());
+ DataCatalogue catalogue = getCatalogue(scopePerCurrentUrl);
+ String username = Utils.getCurrentUser(getThreadLocalRequest()).getUsername();
+ CkanDataset dataset = Utils.getRecordBySemanticIdentifier(semanticIdentifier, catalogue, catalogue.getApiKeyFromUsername(username));
+ return dataset;
+
+ }
+
}
diff --git a/src/main/java/org/gcube/datacatalogue/grsf_manage_widget/server/manage/Utils.java b/src/main/java/org/gcube/datacatalogue/grsf_manage_widget/server/manage/Utils.java
index 20b8e86..6cb0250 100644
--- a/src/main/java/org/gcube/datacatalogue/grsf_manage_widget/server/manage/Utils.java
+++ b/src/main/java/org/gcube/datacatalogue/grsf_manage_widget/server/manage/Utils.java
@@ -528,6 +528,8 @@ public class Utils {
logger.warn(message);
throw new Exception(message);
}
+
+ logger.info("Result size is " + datasets.size());
if(datasets.size() == 1)
return datasets.get(0);
@@ -536,8 +538,10 @@ public class Utils {
// worst situation.. we need to check for the right one
for(CkanDataset dataset: datasets)
for(CkanPair extra : dataset.getExtras())
- if(extra.getKey().contains(Constants.GRSF_SEMANTIC_IDENTIFIER_CUSTOM_KEY) && extra.getValue().equals(suggestedRecordSemanticIdentifier))
+ if(extra.getKey().contains(Constants.GRSF_SEMANTIC_IDENTIFIER_CUSTOM_KEY) && extra.getValue().equals(suggestedRecordSemanticIdentifier)){
+ logger.info("Matching dataset has id " + dataset.getId() + " with value " + Constants.GRSF_SEMANTIC_IDENTIFIER_CUSTOM_KEY);
return dataset;
+ }
}
diff --git a/src/main/java/org/gcube/datacatalogue/grsf_manage_widget/shared/ConnectBean.java b/src/main/java/org/gcube/datacatalogue/grsf_manage_widget/shared/ConnectBean.java
new file mode 100644
index 0000000..c6320ca
--- /dev/null
+++ b/src/main/java/org/gcube/datacatalogue/grsf_manage_widget/shared/ConnectBean.java
@@ -0,0 +1,55 @@
+package org.gcube.datacatalogue.grsf_manage_widget.shared;
+
+
+/**
+ * Connect the current record with another record
+ * @author Costantino Perciante at ISTI-CNR (costantino.perciante@isti.cnr.it)
+ */
+public class ConnectBean {
+
+ private String sourceIdentifier;
+ private String sourceDomain; // i.e. Stock or Fishery
+ private String destSemanticIdentifier; // the dest semantic indentifier of a Fishery or Stock (the link is from a Stock to a Fishery and viceversa)
+
+ public ConnectBean() {
+ super();
+ }
+ /**
+ * @param sourceIdentifier
+ * @param sourceDomain
+ * @param destSemanticIdentifier
+ */
+ public ConnectBean(String sourceIdentifier, String sourceDomain,
+ String destSemanticIdentifier) {
+ super();
+ this.sourceIdentifier = sourceIdentifier;
+ this.sourceDomain = sourceDomain;
+ this.destSemanticIdentifier = destSemanticIdentifier;
+ }
+
+ public String getSourceIdentifier() {
+ return sourceIdentifier;
+ }
+ public void setSourceIdentifier(String sourceIdentifier) {
+ this.sourceIdentifier = sourceIdentifier;
+ }
+ public String getDestSemanticIdentifier() {
+ return destSemanticIdentifier;
+ }
+ public void setDestSemanticIdentifier(String destSemanticIdentifier) {
+ this.destSemanticIdentifier = destSemanticIdentifier;
+ }
+
+ public String getSourceDomain() {
+ return sourceDomain;
+ }
+ public void setSourceDomain(String sourceDomain) {
+ this.sourceDomain = sourceDomain;
+ }
+ @Override
+ public String toString() {
+ return "ConnectBean [sourceIdentifier=" + sourceIdentifier
+ + ", sourceDomain=" + sourceDomain
+ + ", destSemanticIdentifier=" + destSemanticIdentifier + "]";
+ }
+}
diff --git a/src/main/java/org/gcube/datacatalogue/grsf_manage_widget/shared/ManageProductBean.java b/src/main/java/org/gcube/datacatalogue/grsf_manage_widget/shared/ManageProductBean.java
index 4f033fc..c635eb4 100644
--- a/src/main/java/org/gcube/datacatalogue/grsf_manage_widget/shared/ManageProductBean.java
+++ b/src/main/java/org/gcube/datacatalogue/grsf_manage_widget/shared/ManageProductBean.java
@@ -28,6 +28,7 @@ public class ManageProductBean implements Serializable{
private Map extrasIfAvailable; // read from GRSFManageEntries resource
private List sources; // sources for this record
private List similarGrsfRecords;
+ private List connectTo;
public ManageProductBean() {
super();
@@ -180,35 +181,26 @@ public class ManageProductBean implements Serializable{
this.shortNameUpdated = shortNameUpdated;
}
- @Override
- public String toString() {
- return "ManageProductBean ["
- + (semanticIdentifier != null ? "semanticIdentifier="
- + semanticIdentifier + ", " : "")
- + (catalogueIdentifier != null ? "catalogueIdentifier="
- + catalogueIdentifier + ", " : "")
- + (knowledgeBaseIdentifier != null ? "knowledgeBaseIdentifier="
- + knowledgeBaseIdentifier + ", " : "")
- + (grsfType != null ? "grsfType=" + grsfType + ", " : "")
- + (grsfDomain != null ? "grsfDomain=" + grsfDomain + ", " : "")
- + (grsfName != null ? "grsfName=" + grsfName + ", " : "")
- + (shortName != null ? "shortName=" + shortName + ", " : "")
- + (shortNameUpdated != null ? "shortNameUpdated="
- + shortNameUpdated + ", " : "")
- + "traceabilityFlag="
- + traceabilityFlag
- + ", "
- + (currentStatus != null ? "currentStatus=" + currentStatus
- + ", " : "")
- + (newStatus != null ? "newStatus=" + newStatus + ", " : "")
- + (annotation != null ? "annotation=" + annotation + ", " : "")
- + (extrasIfAvailable != null ? "extrasIfAvailable="
- + extrasIfAvailable + ", " : "")
- + (sources != null ? "sources=" + sources + ", " : "")
- + (similarGrsfRecords != null ? "similarGrsfRecords="
- + similarGrsfRecords : "") + "]";
+ public List getConnectTo() {
+ return connectTo;
}
+ public void setConnectTo(List connectTo) {
+ this.connectTo = connectTo;
+ }
-
+ @Override
+ public String toString() {
+ return "ManageProductBean [semanticIdentifier=" + semanticIdentifier
+ + ", catalogueIdentifier=" + catalogueIdentifier
+ + ", knowledgeBaseIdentifier=" + knowledgeBaseIdentifier
+ + ", grsfType=" + grsfType + ", grsfDomain=" + grsfDomain
+ + ", grsfName=" + grsfName + ", shortName=" + shortName
+ + ", shortNameUpdated=" + shortNameUpdated
+ + ", traceabilityFlag=" + traceabilityFlag + ", currentStatus="
+ + currentStatus + ", newStatus=" + newStatus + ", annotation="
+ + annotation + ", extrasIfAvailable=" + extrasIfAvailable
+ + ", sources=" + sources + ", similarGrsfRecords="
+ + similarGrsfRecords + ", connectTo=" + connectTo + "]";
+ }
}
diff --git a/src/main/webapp/GRSFManageWidget.css b/src/main/webapp/GRSFManageWidget.css
index 7aca7ac..c257dd6 100644
--- a/src/main/webapp/GRSFManageWidget.css
+++ b/src/main/webapp/GRSFManageWidget.css
@@ -1,34 +1,6 @@
-/** Add css rules here for your application. */
-
-
-/** Example rules used by the template application (remove for your app) */
-h1 {
- font-size: 2em;
- font-weight: bold;
- color: #777777;
- margin: 40px 0px 70px;
- text-align: center;
-}
-
-.sendButton {
- display: block;
- font-size: 16pt;
-}
-
-/** Most GWT widgets already have a style name defined */
-.gwt-DialogBox {
- width: 400px;
-}
-
-.dialogVPanel {
- margin: 5px;
-}
-
-.serverResponseLabelError {
- color: red;
-}
-
-/** Set ids using widget.getElement().setId("idOfElement") */
-#closeButton {
- margin: 15px 6px 6px;
-}
+.error-text-box {
+ border: 1px solid red;
+ background: white url("../img/validation_error_icon.gif")
+ no-repeat left center;
+ padding-left: 15px !important;
+}
\ No newline at end of file
diff --git a/src/main/webapp/img/validation_error_icon.png b/src/main/webapp/img/validation_error_icon.png
new file mode 100644
index 0000000..5232207
Binary files /dev/null and b/src/main/webapp/img/validation_error_icon.png differ