improved set of information shown by the widget: title, short title, semantic id, grsf type, type, source(s)
git-svn-id: http://svn.research-infrastructures.eu/public/d4science/gcube/trunk/portlets/widgets/grsf-manage-widget@142737 82a268e6-3cf1-43bd-a215-b396298e98cf
This commit is contained in:
parent
d3d96333d4
commit
78d650512c
|
@ -23,7 +23,7 @@ public interface GRSFManageWidgetService extends RemoteService {
|
||||||
ManageProductBean getProductBeanById(String identifier) throws Exception;
|
ManageProductBean getProductBeanById(String identifier) throws Exception;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* check if the user has the role to manage the item
|
* check if the user has the rights to manage the item
|
||||||
*/
|
*/
|
||||||
boolean isAdminUser();
|
boolean isAdminUser();
|
||||||
}
|
}
|
||||||
|
|
|
@ -51,7 +51,22 @@ public class ManageProductWidget extends Composite{
|
||||||
AlertBlock infoBlock;
|
AlertBlock infoBlock;
|
||||||
|
|
||||||
@UiField
|
@UiField
|
||||||
TextArea nameTextArea;
|
TextArea titleTextArea;
|
||||||
|
|
||||||
|
@UiField
|
||||||
|
TextBox productType;
|
||||||
|
|
||||||
|
@UiField
|
||||||
|
TextBox productGrsfType;
|
||||||
|
|
||||||
|
@UiField
|
||||||
|
TextBox productSemanticId;
|
||||||
|
|
||||||
|
@UiField
|
||||||
|
TextBox productShortTitle;
|
||||||
|
|
||||||
|
@UiField
|
||||||
|
TextBox productSource;
|
||||||
|
|
||||||
@UiField
|
@UiField
|
||||||
TextBox currentStatus;
|
TextBox currentStatus;
|
||||||
|
@ -77,9 +92,6 @@ public class ManageProductWidget extends Composite{
|
||||||
@UiField
|
@UiField
|
||||||
Form formUpdate;
|
Form formUpdate;
|
||||||
|
|
||||||
@UiField
|
|
||||||
TextBox productType;
|
|
||||||
|
|
||||||
@UiField
|
@UiField
|
||||||
Image loadingImage;
|
Image loadingImage;
|
||||||
|
|
||||||
|
@ -141,9 +153,15 @@ public class ManageProductWidget extends Composite{
|
||||||
bean = result;
|
bean = result;
|
||||||
annotationArea.setText("");
|
annotationArea.setText("");
|
||||||
infoBlock.setVisible(false);
|
infoBlock.setVisible(false);
|
||||||
nameTextArea.setText(bean.getItemTitle());
|
|
||||||
|
titleTextArea.setText(bean.getItemTitle());
|
||||||
currentStatus.setText(bean.getCurrentStatus().toString());
|
currentStatus.setText(bean.getCurrentStatus().toString());
|
||||||
productType.setText(bean.getGrsfType());
|
productGrsfType.setText(bean.getGrsfType());
|
||||||
|
productType.setText(bean.getType());
|
||||||
|
productSemanticId.setText(bean.getSemanticId());
|
||||||
|
productShortTitle.setText(bean.getShortTitle());
|
||||||
|
productSource.setText(bean.getSource());
|
||||||
|
|
||||||
List<GRSFStatus> statusToShow = new ArrayList<GRSFStatus>(STATUS);
|
List<GRSFStatus> statusToShow = new ArrayList<GRSFStatus>(STATUS);
|
||||||
statusToShow.remove(bean.getCurrentStatus());
|
statusToShow.remove(bean.getCurrentStatus());
|
||||||
listBoxStatus.addItem("Select the new status");
|
listBoxStatus.addItem("Select the new status");
|
||||||
|
|
|
@ -20,23 +20,75 @@
|
||||||
<b:AlertBlock type="INFO" close="false" animation="true"
|
<b:AlertBlock type="INFO" close="false" animation="true"
|
||||||
visible="false" ui:field="infoBlock"></b:AlertBlock>
|
visible="false" ui:field="infoBlock"></b:AlertBlock>
|
||||||
|
|
||||||
<b:Form type="VERTICAL" visible="true" ui:field="formUpdate" width="100%">
|
<b:Form type="VERTICAL" visible="true" ui:field="formUpdate"
|
||||||
|
width="100%">
|
||||||
|
|
||||||
<b:ControlGroup ui:field="productTitleGroup">
|
<b:ControlGroup ui:field="productTitleGroup">
|
||||||
<b:ControlLabel for="name" title="Item name">
|
<b:ControlLabel for="titel" title="Item title">
|
||||||
<b>Item Name:</b>
|
<b>Item title:</b>
|
||||||
</b:ControlLabel>
|
</b:ControlLabel>
|
||||||
<b:Controls>
|
<b:Controls>
|
||||||
<b:TextArea alternateSize="LARGE" placeholder="Item name"
|
<b:TextArea alternateSize="LARGE" placeholder="Item title"
|
||||||
enabled="false" width="97%" b:id="name" title="Item name"
|
enabled="false" width="97%" b:id="name" title="Item title"
|
||||||
ui:field="nameTextArea" />
|
ui:field="titleTextArea" />
|
||||||
|
</b:Controls>
|
||||||
|
</b:ControlGroup>
|
||||||
|
|
||||||
|
<b:ControlGroup ui:field="productGrsfTypeGroup">
|
||||||
|
<b:ControlLabel for="productGrsfType" title="The GRSF Item type">
|
||||||
|
<b>Item GRSF Type:</b>
|
||||||
|
</b:ControlLabel>
|
||||||
|
<b:Controls>
|
||||||
|
<b:TextBox b:id="productGrsfType" alternateSize="LARGE"
|
||||||
|
width="97%" title="The GRSF Item type" enabled="false" ui:field="productGrsfType"></b:TextBox>
|
||||||
|
</b:Controls>
|
||||||
|
</b:ControlGroup>
|
||||||
|
|
||||||
|
<b:ControlGroup ui:field="productSemanticIdGroup">
|
||||||
|
<b:ControlLabel for="productSemanticId" title="The semantic id">
|
||||||
|
<b>Item Semantic Id:</b>
|
||||||
|
</b:ControlLabel>
|
||||||
|
<b:Controls>
|
||||||
|
<b:TextBox b:id="productSemanticId" alternateSize="LARGE"
|
||||||
|
width="97%" title="The semantic id" enabled="false" ui:field="productSemanticId"></b:TextBox>
|
||||||
|
</b:Controls>
|
||||||
|
</b:ControlGroup>
|
||||||
|
|
||||||
|
<b:ControlGroup ui:field="productShortTitleGroup">
|
||||||
|
<b:ControlLabel for="productShortTitle" title="The short title">
|
||||||
|
<b>Item Short Title:</b>
|
||||||
|
</b:ControlLabel>
|
||||||
|
<b:Controls>
|
||||||
|
<b:TextBox b:id="productShortTitle" alternateSize="LARGE"
|
||||||
|
width="97%" title="The short title" enabled="false" ui:field="productShortTitle"></b:TextBox>
|
||||||
|
</b:Controls>
|
||||||
|
</b:ControlGroup>
|
||||||
|
|
||||||
|
<b:ControlGroup ui:field="productSourceGroup">
|
||||||
|
<b:ControlLabel for="productSource" title="The sources">
|
||||||
|
<b>Item Sources:</b>
|
||||||
|
</b:ControlLabel>
|
||||||
|
<b:Controls>
|
||||||
|
<b:TextBox b:id="productSource" alternateSize="LARGE"
|
||||||
|
width="97%" title="The sources" enabled="false" ui:field="productSource"></b:TextBox>
|
||||||
|
</b:Controls>
|
||||||
|
</b:ControlGroup>
|
||||||
|
|
||||||
|
<b:ControlGroup ui:field="productTypeGroup">
|
||||||
|
<b:ControlLabel for="productType" title="The Item type">
|
||||||
|
<b>Item Type:</b>
|
||||||
|
</b:ControlLabel>
|
||||||
|
<b:Controls>
|
||||||
|
<b:TextBox b:id="productType" alternateSize="LARGE"
|
||||||
|
width="97%" title="The Item type" enabled="false" ui:field="productType"></b:TextBox>
|
||||||
</b:Controls>
|
</b:Controls>
|
||||||
</b:ControlGroup>
|
</b:ControlGroup>
|
||||||
|
|
||||||
<b:ControlGroup ui:field="currentStatusGroup">
|
<b:ControlGroup ui:field="currentStatusGroup">
|
||||||
<b:ControlLabel for="currentStatus"
|
<b:ControlLabel for="currentStatus"
|
||||||
title="The current status of this Item">
|
title="The current status of this Item">
|
||||||
<b>Item Current Status:</b></b:ControlLabel>
|
<b>Item Current Status:</b>
|
||||||
|
</b:ControlLabel>
|
||||||
<b:Controls>
|
<b:Controls>
|
||||||
<b:TextBox b:id="currentStatus" alternateSize="LARGE"
|
<b:TextBox b:id="currentStatus" alternateSize="LARGE"
|
||||||
enabled="false" width="97%" title="The current status of this Item"
|
enabled="false" width="97%" title="The current status of this Item"
|
||||||
|
@ -46,30 +98,20 @@
|
||||||
</b:ControlGroup>
|
</b:ControlGroup>
|
||||||
|
|
||||||
<b:ControlGroup ui:field="listBoxStatusGroup">
|
<b:ControlGroup ui:field="listBoxStatusGroup">
|
||||||
<b:ControlLabel for="listboxStatus"
|
<b:ControlLabel for="listboxStatus" title="The new status of this Item">
|
||||||
title="The new status of this Item">
|
<b>Item New Status:</b>
|
||||||
<b>Item New Status:</b></b:ControlLabel>
|
</b:ControlLabel>
|
||||||
<b:Controls>
|
<b:Controls>
|
||||||
<b:ListBox b:id="listboxStatus" alternateSize="LARGE"
|
<b:ListBox b:id="listboxStatus" alternateSize="LARGE"
|
||||||
width="97%" title="Select a new status" enabled="true"
|
width="97%" title="Select a new status" enabled="true" ui:field="listBoxStatus"></b:ListBox>
|
||||||
ui:field="listBoxStatus"></b:ListBox>
|
|
||||||
</b:Controls>
|
|
||||||
</b:ControlGroup>
|
|
||||||
|
|
||||||
<b:ControlGroup ui:field="productTypeGroup">
|
|
||||||
<b:ControlLabel for="productType"
|
|
||||||
title="The Item type">
|
|
||||||
<b>Item Type:</b></b:ControlLabel>
|
|
||||||
<b:Controls>
|
|
||||||
<b:TextBox b:id="productType" alternateSize="LARGE"
|
|
||||||
width="97%" title="The Item type" enabled="false" ui:field="productType"></b:TextBox>
|
|
||||||
</b:Controls>
|
</b:Controls>
|
||||||
</b:ControlGroup>
|
</b:ControlGroup>
|
||||||
|
|
||||||
<b:ControlGroup ui:field="annotationAreaGroup">
|
<b:ControlGroup ui:field="annotationAreaGroup">
|
||||||
<b:ControlLabel for="annotation"
|
<b:ControlLabel for="annotation"
|
||||||
title="An annotation message to send along the update">
|
title="An annotation message to send along the update">
|
||||||
<b>Annotation:</b></b:ControlLabel>
|
<b>Annotation:</b>
|
||||||
|
</b:ControlLabel>
|
||||||
<b:Controls>
|
<b:Controls>
|
||||||
<b:TextArea b:id="annotation" alternateSize="LARGE"
|
<b:TextArea b:id="annotation" alternateSize="LARGE"
|
||||||
placeholder="Add an annotation message" enabled="true" width="97%"
|
placeholder="Add an annotation message" enabled="true" width="97%"
|
||||||
|
|
|
@ -59,9 +59,16 @@ public class GRSFNotificationService extends RemoteServiceServlet implements GRS
|
||||||
private static final Log logger = LogFactoryUtil.getLog(GRSFNotificationService.class);
|
private static final Log logger = LogFactoryUtil.getLog(GRSFNotificationService.class);
|
||||||
private static final String ANNOTATION_KEY = "Annotation on update";
|
private static final String ANNOTATION_KEY = "Annotation on update";
|
||||||
private static final SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
private static final SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
||||||
private static final String STATUS_CUSTOM_FIELD_KEY = "Status";
|
|
||||||
private static final int MAX_TRIAL = 5;
|
private static final int MAX_TRIAL = 5;
|
||||||
|
|
||||||
|
// info of the record to be shown at client-side
|
||||||
|
private static final String STATUS_CUSTOM_FIELD_KEY = "Status";
|
||||||
|
private static final String KB_UUID_FIELD_KEY = "UUID Knowledge Base";
|
||||||
|
private static final String TYPE_FIELD_KEY = "Type";
|
||||||
|
private static final String GRSF_TYPE_FIELD_KEY = "GRSF type";
|
||||||
|
private static final String SHORT_TITLE_FIELD_KEY = "Short Title";
|
||||||
|
private static final String SOURCES_TITLE_FIELD_KEY = "Source";
|
||||||
|
|
||||||
// request post fields FORTH Service
|
// request post fields FORTH Service
|
||||||
private static final String CATALOGUE_ID = "catalog_id";
|
private static final String CATALOGUE_ID = "catalog_id";
|
||||||
private static final String KB_ID = "record_id";
|
private static final String KB_ID = "record_id";
|
||||||
|
@ -69,7 +76,7 @@ public class GRSFNotificationService extends RemoteServiceServlet implements GRS
|
||||||
private static final String STATUS = "status";
|
private static final String STATUS = "status";
|
||||||
private static final String ANNOTATION = "annotation_msg";
|
private static final String ANNOTATION = "annotation_msg";
|
||||||
private static final String ERROR = "error";
|
private static final String ERROR = "error";
|
||||||
|
|
||||||
// discover the endpoint of the grsf updater on IS
|
// discover the endpoint of the grsf updater on IS
|
||||||
public static final String GRSF_UPDATER_SERVICE = "GRSFUpdaterEndPoint";
|
public static final String GRSF_UPDATER_SERVICE = "GRSFUpdaterEndPoint";
|
||||||
private static final String SERVICE_POST_METHOD = "/service/updater/post";
|
private static final String SERVICE_POST_METHOD = "/service/updater/post";
|
||||||
|
@ -142,33 +149,55 @@ public class GRSFNotificationService extends RemoteServiceServlet implements GRS
|
||||||
String username = getCurrentUser(getThreadLocalRequest()).getUsername();
|
String username = getCurrentUser(getThreadLocalRequest()).getUsername();
|
||||||
CkanDataset product = catalogue.getDataset(productIdentifier, catalogue.getApiKeyFromUsername(username));
|
CkanDataset product = catalogue.getDataset(productIdentifier, catalogue.getApiKeyFromUsername(username));
|
||||||
|
|
||||||
// get extras
|
|
||||||
Map<String, String> extras = product.getExtrasAsHashMap();
|
|
||||||
String status = extras.get("Status");
|
|
||||||
String uuidKB = extras.get("UUID Knowledge Base");
|
|
||||||
String productType = extras.get("Product type");
|
|
||||||
String recordType = extras.get("Record type");
|
|
||||||
String title = product.getTitle();
|
|
||||||
|
|
||||||
// it cannot be enabled in this case ...
|
// it cannot be enabled in this case ...
|
||||||
if(recordType == null || recordType.equals("Source"))
|
if(product == null)
|
||||||
throw new NoGRSFRecordException("This is not a GRSF Item");
|
throw new Exception("Unable to retrieve information for the selected item, sorry");
|
||||||
|
else{
|
||||||
|
|
||||||
if(status == null || uuidKB == null || productType == null)
|
// check it is a grsf item, else..
|
||||||
throw new Exception("Some information is missing in this record: Status = " + status + ", knowledge_base_uuid = " + uuidKB +
|
List<CkanGroup> groups = product.getGroups();
|
||||||
", and product type is = " + productType);
|
boolean isGrsf = false;
|
||||||
|
|
||||||
|
for (CkanGroup ckanGroup : groups) {
|
||||||
|
if(ckanGroup.getName().contains("grsf")){
|
||||||
|
isGrsf = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
toReturn = new ManageProductBean();
|
if(!isGrsf)
|
||||||
toReturn.setCatalogueIdentifier(productIdentifier);
|
throw new NoGRSFRecordException("This is not a GRSF Item");
|
||||||
toReturn.setCurrentStatus(GRSFStatus.fromString(status));
|
|
||||||
toReturn.setKnowledgeBaseIdentifier(uuidKB);
|
|
||||||
toReturn.setItemTitle(title);
|
|
||||||
toReturn.setGrsfType(productType);
|
|
||||||
|
|
||||||
logger.info("Returning item bean " + toReturn);
|
// get extras
|
||||||
|
Map<String, String> extras = product.getExtrasAsHashMap();
|
||||||
|
String status = extras.get(STATUS_CUSTOM_FIELD_KEY);
|
||||||
|
String uuidKB = extras.get(KB_UUID_FIELD_KEY);
|
||||||
|
String productType = extras.get(TYPE_FIELD_KEY);
|
||||||
|
String productGRSFType = extras.get(GRSF_TYPE_FIELD_KEY);
|
||||||
|
String semanticId = extras.get(productGRSFType + " id"); // i.e "Stock id" or "Fishery id"
|
||||||
|
String shortTitle = extras.get(SHORT_TITLE_FIELD_KEY);
|
||||||
|
String sources = extras.get(SOURCES_TITLE_FIELD_KEY);
|
||||||
|
String title = product.getTitle();
|
||||||
|
|
||||||
|
if(status == null || uuidKB == null || productGRSFType == null)
|
||||||
|
throw new Exception("Some information is missing in this record: Status = " + status + ", knowledge_base_uuid = " + uuidKB +
|
||||||
|
", and grsf type is = " + productType);
|
||||||
|
|
||||||
return toReturn;
|
toReturn = new ManageProductBean();
|
||||||
|
toReturn.setCatalogueIdentifier(productIdentifier);
|
||||||
|
toReturn.setCurrentStatus(GRSFStatus.fromString(status));
|
||||||
|
toReturn.setKnowledgeBaseIdentifier(uuidKB);
|
||||||
|
toReturn.setItemTitle(title);
|
||||||
|
toReturn.setGrsfType(productGRSFType);
|
||||||
|
toReturn.setType(productType);
|
||||||
|
toReturn.setSemanticId(semanticId);
|
||||||
|
toReturn.setShortTitle(shortTitle);
|
||||||
|
toReturn.setSource(sources);
|
||||||
|
|
||||||
|
logger.info("Returning item bean " + toReturn);
|
||||||
|
|
||||||
|
return toReturn;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -432,7 +461,7 @@ public class GRSFNotificationService extends RemoteServiceServlet implements GRS
|
||||||
|
|
||||||
return httpServletRequest.getHeader(GCUBE_REQUEST_URL);
|
return httpServletRequest.getHeader(GCUBE_REQUEST_URL);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Retrieve the current scope by using the portal manager
|
* Retrieve the current scope by using the portal manager
|
||||||
* @param b
|
* @param b
|
||||||
|
|
Loading…
Reference in New Issue