minor fixes
git-svn-id: http://svn.d4science-ii.research-infrastructures.eu/gcube/trunk/portlets/widgets/ckan-metadata-publisher-widget@134106 82a268e6-3cf1-43bd-a215-b396298e98cf
This commit is contained in:
parent
23c424ccab
commit
1cf1c8a366
|
@ -20,7 +20,6 @@
|
||||||
<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
|
<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
|
||||||
<attributes>
|
<attributes>
|
||||||
<attribute name="maven.pomderived" value="true"/>
|
<attribute name="maven.pomderived" value="true"/>
|
||||||
<attribute name="org.eclipse.jst.component.dependency" value="/WEB-INF/lib"/>
|
|
||||||
</attributes>
|
</attributes>
|
||||||
</classpathentry>
|
</classpathentry>
|
||||||
<classpathentry excluding="**" kind="src" output="${webappDirectory}/WEB-INF/classes" path="src/main/resources">
|
<classpathentry excluding="**" kind="src" output="${webappDirectory}/WEB-INF/classes" path="src/main/resources">
|
||||||
|
|
3
pom.xml
3
pom.xml
|
@ -16,7 +16,7 @@
|
||||||
<name>gCube Ckan metadata publisher widget</name>
|
<name>gCube Ckan metadata publisher widget</name>
|
||||||
|
|
||||||
<description>
|
<description>
|
||||||
gCube Ckan metadata publisher widget is a GWT Widget that allows to publish metadata on the d4science ckan data catalogue.
|
gCube Ckan metadata publisher widget is a GWT Widget that allows to publish metadata on the d4science ckan data catalogue.
|
||||||
</description>
|
</description>
|
||||||
<scm>
|
<scm>
|
||||||
<connection>scm:svn:http://svn.d4science.research-infrastructures.eu/gcube/trunk/portlets/widgets/${project.artifactId}</connection>
|
<connection>scm:svn:http://svn.d4science.research-infrastructures.eu/gcube/trunk/portlets/widgets/${project.artifactId}</connection>
|
||||||
|
@ -270,5 +270,4 @@
|
||||||
</plugins>
|
</plugins>
|
||||||
</build>
|
</build>
|
||||||
|
|
||||||
<packaging>war</packaging>
|
|
||||||
</project>
|
</project>
|
||||||
|
|
|
@ -67,7 +67,7 @@ public class CKanMetadataPublisher implements EntryPoint {
|
||||||
// childrenOfA.add(elementW);
|
// childrenOfA.add(elementW);
|
||||||
// childrenOfW.add(new ResourceElementBean(elementW, "File J", false, null, "Folder A:File W: File J"));
|
// childrenOfW.add(new ResourceElementBean(elementW, "File J", false, null, "Folder A:File W: File J"));
|
||||||
// listLeft.add(elementA);
|
// listLeft.add(elementA);
|
||||||
|
//
|
||||||
// String folderId = "e87bfc7d-4fb0-4795-9c79-0c495500ca9c";
|
// String folderId = "e87bfc7d-4fb0-4795-9c79-0c495500ca9c";
|
||||||
// ckanServices.getTreeFolder(folderId, new AsyncCallback<ResourceElementBean>() {
|
// ckanServices.getTreeFolder(folderId, new AsyncCallback<ResourceElementBean>() {
|
||||||
//
|
//
|
||||||
|
@ -75,8 +75,7 @@ public class CKanMetadataPublisher implements EntryPoint {
|
||||||
// @Override
|
// @Override
|
||||||
// public void onSuccess(ResourceElementBean result) {
|
// public void onSuccess(ResourceElementBean result) {
|
||||||
// if(result != null){
|
// if(result != null){
|
||||||
// List<ResourceElementBean> children = result.getChildren();
|
// RootPanel.get("ckan-metadata-publisher-div").add(new TwinColumnSelectionMainPanel(result));
|
||||||
// RootPanel.get("ckan-metadata-publisher-div").add(new TwinColumnSelectionMainPanel(children));
|
|
||||||
// }
|
// }
|
||||||
// }
|
// }
|
||||||
//
|
//
|
||||||
|
|
|
@ -66,7 +66,7 @@ public interface CKanPublisherService extends RemoteService {
|
||||||
* @return true if it exists, false otherwise
|
* @return true if it exists, false otherwise
|
||||||
*/
|
*/
|
||||||
boolean datasetIdAlreadyExists(String title);
|
boolean datasetIdAlreadyExists(String title);
|
||||||
|
//
|
||||||
// /**
|
// /**
|
||||||
// * Return a tree object representing the whole folder hierarchy
|
// * Return a tree object representing the whole folder hierarchy
|
||||||
// * @param folderId
|
// * @param folderId
|
||||||
|
|
|
@ -336,14 +336,14 @@ public class CreateDatasetForm extends Composite{
|
||||||
|
|
||||||
if(isWorkspaceRequest){
|
if(isWorkspaceRequest){
|
||||||
|
|
||||||
// if there are not resources, for now just checked it ( and hide so that the step will be skipped) TODO
|
// if there are not resources, for now just checked it ( and hide so that the step will be skipped)
|
||||||
if(bean.getResources() == null || bean.getResources().isEmpty()){
|
if(bean.getResources() == null || bean.getResources().isEmpty()){
|
||||||
|
|
||||||
alertNoResources.setType(AlertType.WARNING);
|
alertNoResources.setType(AlertType.WARNING);
|
||||||
alertNoResources.setVisible(true);
|
alertNoResources.setVisible(true);
|
||||||
|
|
||||||
}else
|
}else
|
||||||
resourcesTwinPanel = new TwinColumnSelectionMainPanel(bean.getResources());
|
resourcesTwinPanel = new TwinColumnSelectionMainPanel(bean.getResources().get(0));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -656,8 +656,9 @@ public class CreateDatasetForm extends Composite{
|
||||||
formThirdStep.setVisible(!resourcesPresent);
|
formThirdStep.setVisible(!resourcesPresent);
|
||||||
|
|
||||||
// add the resources to the container panel
|
// add the resources to the container panel
|
||||||
if(workspaceResourcesContainer.getWidget() == null)
|
if(workspaceResourcesContainer.getWidget() == null){
|
||||||
workspaceResourcesContainer.add(resourcesTwinPanel);
|
workspaceResourcesContainer.add(resourcesTwinPanel);
|
||||||
|
}
|
||||||
|
|
||||||
}else{
|
}else{
|
||||||
|
|
||||||
|
|
|
@ -302,7 +302,8 @@
|
||||||
</b:ControlGroup>
|
</b:ControlGroup>
|
||||||
|
|
||||||
<g:SimplePanel ui:field="workspaceResourcesContainer"
|
<g:SimplePanel ui:field="workspaceResourcesContainer"
|
||||||
visible="true"></g:SimplePanel>
|
width="100%" visible="true">
|
||||||
|
</g:SimplePanel>
|
||||||
|
|
||||||
<b:Button title="Continue" ui:field="continueThirdStep"
|
<b:Button title="Continue" ui:field="continueThirdStep"
|
||||||
type="PRIMARY" block="true">Continue</b:Button>
|
type="PRIMARY" block="true">Continue</b:Button>
|
||||||
|
|
|
@ -1,20 +1,18 @@
|
||||||
package org.gcube.portlets.widgets.ckandatapublisherwidget.client.ui.TwinColumnSelection;
|
package org.gcube.portlets.widgets.ckandatapublisherwidget.client.ui.TwinColumnSelection;
|
||||||
|
|
||||||
|
import org.gcube.portlets.widgets.ckandatapublisherwidget.client.ui.icons.Images;
|
||||||
import org.gcube.portlets.widgets.ckandatapublisherwidget.shared.ResourceElementBean;
|
import org.gcube.portlets.widgets.ckandatapublisherwidget.shared.ResourceElementBean;
|
||||||
|
|
||||||
import com.github.gwtbootstrap.client.ui.Icon;
|
|
||||||
import com.github.gwtbootstrap.client.ui.constants.IconType;
|
|
||||||
import com.google.gwt.cell.client.AbstractCell;
|
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.safehtml.shared.SafeHtmlBuilder;
|
||||||
|
import com.google.gwt.user.client.ui.Image;
|
||||||
/**
|
/**
|
||||||
* Cell that renders left side panel objects
|
* Cell that renders left side panel objects
|
||||||
* @author Costantino Perciante at ISTI-CNR (costantino.perciante@isti.cnr.it)
|
* @author Costantino Perciante at ISTI-CNR (costantino.perciante@isti.cnr.it)
|
||||||
*/
|
*/
|
||||||
public class ResourceCellLeft extends AbstractCell<ResourceElementBean>{
|
public class ResourceCellLeft extends AbstractCell<ResourceElementBean>{
|
||||||
|
private static final Images image = GWT.create(Images.class);
|
||||||
private static final String HTML_FILE = new Icon(IconType.FILE_ALT).toString();
|
|
||||||
private static final String HTML_FOLDER = new Icon(IconType.FOLDER_CLOSE_ALT).toString();
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void render(com.google.gwt.cell.client.Cell.Context context,
|
public void render(com.google.gwt.cell.client.Cell.Context context,
|
||||||
|
@ -24,9 +22,19 @@ public class ResourceCellLeft extends AbstractCell<ResourceElementBean>{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
sb.appendHtmlConstant("<div style='width:100%; padding:2px'>");
|
Image file = new Image(image.fileIcon());
|
||||||
sb.appendHtmlConstant(value.isFolder() ? HTML_FOLDER : HTML_FILE);
|
Image folder = new Image(image.folderIcon());
|
||||||
sb.appendHtmlConstant("<span style='margin-left:5px'>");
|
|
||||||
|
file.setWidth("15px");
|
||||||
|
file.setHeight("15px");
|
||||||
|
folder.setWidth("15px");
|
||||||
|
folder.setHeight("15px");
|
||||||
|
|
||||||
|
sb.appendHtmlConstant("<div style='width:100%; 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.appendHtmlConstant("<b>");
|
||||||
sb.appendEscaped(value.getName());
|
sb.appendEscaped(value.getName());
|
||||||
sb.appendHtmlConstant("</b>");
|
sb.appendHtmlConstant("</b>");
|
||||||
|
|
|
@ -1,11 +1,12 @@
|
||||||
package org.gcube.portlets.widgets.ckandatapublisherwidget.client.ui.TwinColumnSelection;
|
package org.gcube.portlets.widgets.ckandatapublisherwidget.client.ui.TwinColumnSelection;
|
||||||
|
|
||||||
|
import org.gcube.portlets.widgets.ckandatapublisherwidget.client.ui.icons.Images;
|
||||||
import org.gcube.portlets.widgets.ckandatapublisherwidget.shared.ResourceElementBean;
|
import org.gcube.portlets.widgets.ckandatapublisherwidget.shared.ResourceElementBean;
|
||||||
|
|
||||||
import com.github.gwtbootstrap.client.ui.Icon;
|
|
||||||
import com.github.gwtbootstrap.client.ui.constants.IconType;
|
|
||||||
import com.google.gwt.cell.client.AbstractCell;
|
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.safehtml.shared.SafeHtmlBuilder;
|
||||||
|
import com.google.gwt.user.client.ui.Image;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Cell that renders right side panel objects
|
* Cell that renders right side panel objects
|
||||||
|
@ -13,7 +14,7 @@ import com.google.gwt.safehtml.shared.SafeHtmlBuilder;
|
||||||
*/
|
*/
|
||||||
public class ResourceCellRight extends AbstractCell<ResourceElementBean>{
|
public class ResourceCellRight extends AbstractCell<ResourceElementBean>{
|
||||||
|
|
||||||
private static final String HTML_FILE = new Icon(IconType.FILE_ALT).toString();
|
private static final Images image = GWT.create(Images.class);
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void render(com.google.gwt.cell.client.Cell.Context context,
|
public void render(com.google.gwt.cell.client.Cell.Context context,
|
||||||
|
@ -23,14 +24,20 @@ public class ResourceCellRight extends AbstractCell<ResourceElementBean>{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
sb.appendHtmlConstant("<div style='width:100%; padding:2px'>");
|
Image file = new Image(image.fileIcon());
|
||||||
sb.appendHtmlConstant(HTML_FILE);
|
|
||||||
|
file.setWidth("15px");
|
||||||
|
file.setHeight("15px");
|
||||||
|
|
||||||
|
sb.appendHtmlConstant("<div style='width:100%; min-height:30px'>");
|
||||||
sb.appendHtmlConstant("<span style='margin-left: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.appendHtmlConstant("<b>");
|
||||||
sb.appendEscaped(value.getFullPath());
|
sb.appendEscaped(value.getFullPath());
|
||||||
sb.appendHtmlConstant("</b>");
|
sb.appendHtmlConstant("</b>");
|
||||||
sb.appendHtmlConstant("</span>");
|
sb.appendHtmlConstant("</span>");
|
||||||
sb.appendHtmlConstant("</div>");
|
sb.appendHtmlConstant("</div>");
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
package org.gcube.portlets.widgets.ckandatapublisherwidget.client.ui.TwinColumnSelection;
|
package org.gcube.portlets.widgets.ckandatapublisherwidget.client.ui.TwinColumnSelection;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
@ -7,7 +8,10 @@ import java.util.Set;
|
||||||
|
|
||||||
import org.gcube.portlets.widgets.ckandatapublisherwidget.shared.ResourceElementBean;
|
import org.gcube.portlets.widgets.ckandatapublisherwidget.shared.ResourceElementBean;
|
||||||
|
|
||||||
|
import com.github.gwtbootstrap.client.ui.Breadcrumbs;
|
||||||
import com.github.gwtbootstrap.client.ui.Button;
|
import com.github.gwtbootstrap.client.ui.Button;
|
||||||
|
import com.github.gwtbootstrap.client.ui.FluidContainer;
|
||||||
|
import com.github.gwtbootstrap.client.ui.NavLink;
|
||||||
import com.github.gwtbootstrap.client.ui.Popover;
|
import com.github.gwtbootstrap.client.ui.Popover;
|
||||||
import com.github.gwtbootstrap.client.ui.constants.Placement;
|
import com.github.gwtbootstrap.client.ui.constants.Placement;
|
||||||
import com.google.gwt.core.client.GWT;
|
import com.google.gwt.core.client.GWT;
|
||||||
|
@ -49,15 +53,32 @@ public class TwinColumnSelectionMainPanel extends Composite{
|
||||||
@UiField
|
@UiField
|
||||||
Button allToLeftButton;
|
Button allToLeftButton;
|
||||||
@UiField
|
@UiField
|
||||||
Button goRootButton;
|
|
||||||
@UiField
|
|
||||||
Button goUpButton;
|
|
||||||
@UiField
|
|
||||||
Popover popoverResourceSelection;
|
Popover popoverResourceSelection;
|
||||||
@UiField
|
@UiField
|
||||||
Button resourceInfoButton;
|
Button resourceInfoButton;
|
||||||
|
@UiField
|
||||||
|
Breadcrumbs breadcrumbs;
|
||||||
|
@UiField
|
||||||
|
FluidContainer mainContainerResourcesSelection;
|
||||||
|
// @UiField
|
||||||
|
// Button getResources;
|
||||||
|
|
||||||
private static final String PANEL_BORDER_COLOR = "#08c";
|
/**
|
||||||
|
* 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 List<PathBean> pathListBeans = new ArrayList<PathBean>();
|
||||||
|
// private static final String PANEL_BORDER_COLOR = "#08c";
|
||||||
private static final String PANEL_HEIGHT = "400px";
|
private static final String PANEL_HEIGHT = "400px";
|
||||||
private ShowMorePagerPanel showMorePanelLeft = new ShowMorePagerPanel();
|
private ShowMorePagerPanel showMorePanelLeft = new ShowMorePagerPanel();
|
||||||
private ShowMorePagerPanel showMorePanelRight = new ShowMorePagerPanel();
|
private ShowMorePagerPanel showMorePanelRight = new ShowMorePagerPanel();
|
||||||
|
@ -67,10 +88,12 @@ public class TwinColumnSelectionMainPanel extends Composite{
|
||||||
private ListDataProvider<ResourceElementBean> dataProviderRight = new ListDataProvider<ResourceElementBean>();
|
private ListDataProvider<ResourceElementBean> dataProviderRight = new ListDataProvider<ResourceElementBean>();
|
||||||
private MultiSelectionModel<ResourceElementBean> selectionModelRight;
|
private MultiSelectionModel<ResourceElementBean> selectionModelRight;
|
||||||
private MultiSelectionModel<ResourceElementBean> selectionModelLeft;
|
private MultiSelectionModel<ResourceElementBean> selectionModelLeft;
|
||||||
private final List<ResourceElementBean> initialElements;
|
private final ResourceElementBean initialBean;
|
||||||
private final static HTML aboutHeader = new HTML("<b>Resource Manager</b>");
|
private final static HTML aboutHeader = new HTML("<b>Resource Manager</b>");
|
||||||
private final static HTML aboutBody = new HTML("Move the files you want to attach to the product on the right panel below."
|
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.");
|
+ " Please consider that any complex hierarchy structure you may have will be flatten.</p>");
|
||||||
|
|
||||||
|
// private static final int PATH_THRESHOLD = 1; // TODO
|
||||||
|
|
||||||
private static TwinColumnSelectionMainPanelUiBinder uiBinder = GWT
|
private static TwinColumnSelectionMainPanelUiBinder uiBinder = GWT
|
||||||
.create(TwinColumnSelectionMainPanelUiBinder.class);
|
.create(TwinColumnSelectionMainPanelUiBinder.class);
|
||||||
|
@ -79,39 +102,42 @@ public class TwinColumnSelectionMainPanel extends Composite{
|
||||||
UiBinder<Widget, TwinColumnSelectionMainPanel> {
|
UiBinder<Widget, TwinColumnSelectionMainPanel> {
|
||||||
}
|
}
|
||||||
|
|
||||||
public TwinColumnSelectionMainPanel(List<ResourceElementBean> elements) {
|
public TwinColumnSelectionMainPanel(ResourceElementBean initialBean) {
|
||||||
initWidget(uiBinder.createAndBindUi(this));
|
initWidget(uiBinder.createAndBindUi(this));
|
||||||
|
|
||||||
this.initialElements = elements;
|
this.initialBean = initialBean;
|
||||||
this.buttonsPanel.getElement().getStyle().setMarginTop(50, Unit.PCT);
|
|
||||||
|
|
||||||
goRootButton.getElement().getStyle().setPaddingLeft(0, Unit.PX);
|
this.buttonsPanel.getElement().getStyle().setMarginTop(50, Unit.PCT);
|
||||||
allToRightButton.getElement().getStyle().setMarginBottom(4, Unit.PX);
|
allToRightButton.getElement().getStyle().setMarginBottom(4, Unit.PX);
|
||||||
toRightButton.getElement().getStyle().setMarginBottom(4, Unit.PX);
|
toRightButton.getElement().getStyle().setMarginBottom(4, Unit.PX);
|
||||||
toLeftButton.getElement().getStyle().setMarginBottom(4, Unit.PX);
|
toLeftButton.getElement().getStyle().setMarginBottom(4, Unit.PX);
|
||||||
allToLeftButton.getElement().getStyle().setMarginBottom(4, Unit.PX);
|
allToLeftButton.getElement().getStyle().setMarginBottom(4, Unit.PX);
|
||||||
|
|
||||||
buttonsPanel.getElement().setAttribute("align", "center");
|
buttonsPanel.getElement().setAttribute("align", "center");
|
||||||
|
|
||||||
popoverResourceSelection.setPlacement(Placement.LEFT);
|
popoverResourceSelection.setPlacement(Placement.LEFT);
|
||||||
popoverResourceSelection.setHeading(aboutHeader.getHTML());
|
popoverResourceSelection.setHeading(aboutHeader.getHTML());
|
||||||
popoverResourceSelection.setText(aboutBody.getHTML());
|
popoverResourceSelection.setText(aboutBody.getHTML());
|
||||||
resourceInfoButton.getElement().getStyle().setFloat(Float.RIGHT);
|
resourceInfoButton.getElement().getStyle().setFloat(Float.RIGHT);
|
||||||
prepareHandlers();
|
resourceInfoButton.getElement().getStyle().setPaddingRight(0, Unit.PX);
|
||||||
initLeftSidePanel(elements);
|
mainContainerResourcesSelection.getElement().getStyle().setPadding(20, Unit.PX);
|
||||||
initRightSidePanel();
|
|
||||||
|
|
||||||
|
prepareHandlers();
|
||||||
|
initLeftSidePanel(initialBean);
|
||||||
|
initRightSidePanel();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Initialize the left side panel
|
* Initialize the left side panel
|
||||||
*/
|
*/
|
||||||
private void initLeftSidePanel(List<ResourceElementBean> elements) {
|
private void initLeftSidePanel(final ResourceElementBean initialBean) {
|
||||||
|
|
||||||
// initialize the left side list
|
// initialize the left side list
|
||||||
ResourceCellLeft cell = new ResourceCellLeft();
|
ResourceCellLeft cell = new ResourceCellLeft();
|
||||||
|
|
||||||
// Set a key provider that provides a unique key for each object.
|
// Set a key provider that provides a unique key for each object.
|
||||||
cellListLeft = new CellList<ResourceElementBean>(cell, ResourceElementBean.KEY_PROVIDER);
|
cellListLeft = new CellList<ResourceElementBean>(cell, ResourceElementBean.KEY_PROVIDER);
|
||||||
cellListLeft.setPageSize(elements.size());
|
cellListLeft.setPageSize(initialBean.getChildren().size());
|
||||||
cellListLeft.setKeyboardPagingPolicy(KeyboardPagingPolicy.INCREASE_RANGE);
|
cellListLeft.setKeyboardPagingPolicy(KeyboardPagingPolicy.INCREASE_RANGE);
|
||||||
|
|
||||||
// Add a selection model so we can select cells.
|
// Add a selection model so we can select cells.
|
||||||
|
@ -122,14 +148,40 @@ public class TwinColumnSelectionMainPanel extends Composite{
|
||||||
selectionModelLeft.addSelectionChangeHandler(new SelectionChangeEvent.Handler() {
|
selectionModelLeft.addSelectionChangeHandler(new SelectionChangeEvent.Handler() {
|
||||||
public void onSelectionChange(SelectionChangeEvent event) {
|
public void onSelectionChange(SelectionChangeEvent event) {
|
||||||
Iterator<ResourceElementBean> selectedObjectsIterator = selectionModelLeft.getSelectedSet().iterator();
|
Iterator<ResourceElementBean> selectedObjectsIterator = selectionModelLeft.getSelectedSet().iterator();
|
||||||
|
|
||||||
while (selectedObjectsIterator.hasNext()) {
|
while (selectedObjectsIterator.hasNext()) {
|
||||||
ResourceElementBean selectedBean = (ResourceElementBean) selectedObjectsIterator.next();
|
ResourceElementBean selectedBean = (ResourceElementBean) selectedObjectsIterator.next();
|
||||||
if(selectedBean.isFolder()){
|
if(selectedBean.isFolder()){
|
||||||
|
|
||||||
|
// a single folder selected
|
||||||
if(selectionModelLeft.getSelectedSet().size() == 1){
|
if(selectionModelLeft.getSelectedSet().size() == 1){
|
||||||
|
|
||||||
|
// update path
|
||||||
|
final NavLink navElem = new NavLink(selectedBean.getName());
|
||||||
|
final PathBean pathBean = new PathBean(navElem, selectedBean);
|
||||||
|
|
||||||
|
navElem.addClickHandler(new ClickHandler() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onClick(ClickEvent event) {
|
||||||
|
|
||||||
|
removeStartingFromBreadcrumbs(navElem, pathBean);
|
||||||
|
// 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());
|
Collections.sort(selectedBean.getChildren());
|
||||||
dataProviderLeft.setList(selectedBean.getChildren());
|
dataProviderLeft.setList(selectedBean.getChildren());
|
||||||
dataProviderLeft.refresh();
|
dataProviderLeft.refresh();
|
||||||
dataProviderLeft.flush();
|
|
||||||
}
|
}
|
||||||
selectionModelLeft.setSelected(selectedBean, false);
|
selectionModelLeft.setSelected(selectedBean, false);
|
||||||
}
|
}
|
||||||
|
@ -140,8 +192,28 @@ public class TwinColumnSelectionMainPanel extends Composite{
|
||||||
});
|
});
|
||||||
|
|
||||||
// set the list into the provider
|
// set the list into the provider
|
||||||
Collections.sort(elements);
|
Collections.sort(this.initialBean.getChildren());
|
||||||
dataProviderLeft.setList(elements);
|
dataProviderLeft.setList(this.initialBean.getChildren());
|
||||||
|
|
||||||
|
// add root to breadcrumb
|
||||||
|
final NavLink root = new NavLink(initialBean.getName());
|
||||||
|
final PathBean pathBean = new PathBean(root, initialBean);
|
||||||
|
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());
|
||||||
|
dataProviderLeft.refresh();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
// set the cell list into the provider
|
// set the cell list into the provider
|
||||||
dataProviderLeft.addDataDisplay(cellListLeft);
|
dataProviderLeft.addDataDisplay(cellListLeft);
|
||||||
|
@ -150,12 +222,48 @@ public class TwinColumnSelectionMainPanel extends Composite{
|
||||||
showMorePanelLeft.setDisplay(cellListLeft);
|
showMorePanelLeft.setDisplay(cellListLeft);
|
||||||
showMorePanelLeft.setHeight(PANEL_HEIGHT);
|
showMorePanelLeft.setHeight(PANEL_HEIGHT);
|
||||||
showMorePanelLeft.getElement().getStyle().setBorderStyle(BorderStyle.SOLID);
|
showMorePanelLeft.getElement().getStyle().setBorderStyle(BorderStyle.SOLID);
|
||||||
showMorePanelLeft.getElement().getStyle().setBorderColor(PANEL_BORDER_COLOR);
|
showMorePanelLeft.getElement().getStyle().setBorderWidth(1, Unit.PX);
|
||||||
|
// showMorePanelLeft.getElement().getStyle().setBorderColor(PANEL_BORDER_COLOR);
|
||||||
|
|
||||||
// add the list to the leftContainerPanel
|
// add the list to the leftContainerPanel
|
||||||
leftContainer.add(showMorePanelLeft);
|
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)
|
||||||
|
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
|
* Initialize the left side panel
|
||||||
*/
|
*/
|
||||||
|
@ -186,7 +294,8 @@ public class TwinColumnSelectionMainPanel extends Composite{
|
||||||
showMorePanelRight.setDisplay(cellListRight);
|
showMorePanelRight.setDisplay(cellListRight);
|
||||||
showMorePanelRight.setHeight(PANEL_HEIGHT);
|
showMorePanelRight.setHeight(PANEL_HEIGHT);
|
||||||
showMorePanelRight.getElement().getStyle().setBorderStyle(BorderStyle.SOLID);
|
showMorePanelRight.getElement().getStyle().setBorderStyle(BorderStyle.SOLID);
|
||||||
showMorePanelRight.getElement().getStyle().setBorderColor(PANEL_BORDER_COLOR);
|
showMorePanelRight.getElement().getStyle().setBorderWidth(1, Unit.PX);
|
||||||
|
// showMorePanelRight.getElement().getStyle().setBorderColor(PANEL_BORDER_COLOR);
|
||||||
|
|
||||||
// add the list to the leftContainerPanel
|
// add the list to the leftContainerPanel
|
||||||
rightContainer.add(showMorePanelRight);
|
rightContainer.add(showMorePanelRight);
|
||||||
|
@ -238,77 +347,31 @@ public class TwinColumnSelectionMainPanel extends Composite{
|
||||||
*/
|
*/
|
||||||
private void prepareHandlers() {
|
private void prepareHandlers() {
|
||||||
|
|
||||||
goRootButton.addClickHandler(new ClickHandler() {
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onClick(ClickEvent event) {
|
|
||||||
|
|
||||||
dataProviderLeft.setList(initialElements);
|
|
||||||
dataProviderLeft.flush();
|
|
||||||
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
goUpButton.addClickHandler(new ClickHandler() {
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onClick(ClickEvent event) {
|
|
||||||
|
|
||||||
ResourceElementBean firstElemCurrList = dataProviderLeft.getList().get(0);
|
|
||||||
if(firstElemCurrList.getParent() == null){
|
|
||||||
GWT.log("It is the root ...");
|
|
||||||
return;
|
|
||||||
}else{
|
|
||||||
// get the children of the parent and show them
|
|
||||||
GWT.log("Called " + firstElemCurrList.getParent());
|
|
||||||
if(firstElemCurrList.getParent().getParent() == null){
|
|
||||||
// still the root
|
|
||||||
dataProviderLeft.setList(initialElements);
|
|
||||||
}else{
|
|
||||||
dataProviderLeft.setList(firstElemCurrList.getParent().getParent().getChildren());
|
|
||||||
}
|
|
||||||
dataProviderLeft.flush();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
allToRightButton.addClickHandler(new ClickHandler() {
|
allToRightButton.addClickHandler(new ClickHandler() {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onClick(ClickEvent event) {
|
public void onClick(ClickEvent event) {
|
||||||
|
|
||||||
moveToRight(selectionModelLeft.getSelectedSet());
|
moveToRight(selectionModelLeft.getSelectedSet());
|
||||||
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
toRightButton.addClickHandler(new ClickHandler() {
|
toRightButton.addClickHandler(new ClickHandler() {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onClick(ClickEvent event) {
|
public void onClick(ClickEvent event) {
|
||||||
|
|
||||||
moveToRight(selectionModelLeft.getSelectedSet());
|
moveToRight(selectionModelLeft.getSelectedSet());
|
||||||
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
allToLeftButton.addClickHandler(new ClickHandler() {
|
allToLeftButton.addClickHandler(new ClickHandler() {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onClick(ClickEvent event) {
|
public void onClick(ClickEvent event) {
|
||||||
|
|
||||||
moveToLeft(selectionModelRight.getSelectedSet());
|
moveToLeft(selectionModelRight.getSelectedSet());
|
||||||
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
toLeftButton.addClickHandler(new ClickHandler() {
|
toLeftButton.addClickHandler(new ClickHandler() {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onClick(ClickEvent event) {
|
public void onClick(ClickEvent event) {
|
||||||
|
|
||||||
moveToLeft(selectionModelRight.getSelectedSet());
|
moveToLeft(selectionModelRight.getSelectedSet());
|
||||||
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -367,6 +430,12 @@ public class TwinColumnSelectionMainPanel extends Composite{
|
||||||
*/
|
*/
|
||||||
public void freeze() {
|
public void freeze() {
|
||||||
|
|
||||||
|
Iterator<Widget> iteratorOverPath = breadcrumbs.iterator();
|
||||||
|
while (iteratorOverPath.hasNext()) {
|
||||||
|
Widget widget = (Widget) iteratorOverPath.next();
|
||||||
|
if(widget instanceof NavLink)
|
||||||
|
((NavLink)widget).setActive(false);
|
||||||
|
}
|
||||||
allToRightButton.setEnabled(false);
|
allToRightButton.setEnabled(false);
|
||||||
toRightButton.setEnabled(false);
|
toRightButton.setEnabled(false);
|
||||||
allToLeftButton.setEnabled(false);
|
allToLeftButton.setEnabled(false);
|
||||||
|
@ -378,7 +447,59 @@ public class TwinColumnSelectionMainPanel extends Composite{
|
||||||
* @return the resources to save
|
* @return the resources to save
|
||||||
*/
|
*/
|
||||||
public List<ResourceElementBean> getResourcesToPublish(){
|
public List<ResourceElementBean> getResourcesToPublish(){
|
||||||
return dataProviderRight.getList();
|
List<ResourceElementBean> current = dataProviderRight.getList();
|
||||||
|
|
||||||
|
List<ResourceElementBean> toReturn = new ArrayList<ResourceElementBean>();
|
||||||
|
|
||||||
|
for (ResourceElementBean resourceElementBean : current) {
|
||||||
|
resourceElementBean.setName(resourceElementBean.getFullPath());
|
||||||
|
ResourceElementBean beanWithoutChildren = new ResourceElementBean(resourceElementBean);
|
||||||
|
toReturn.add(beanWithoutChildren);
|
||||||
|
}
|
||||||
|
|
||||||
|
GWT.log("List " + toReturn);
|
||||||
|
return toReturn;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// @UiHandler("getResources")
|
||||||
|
// void getResources(ClickEvent ce){
|
||||||
|
// getResourcesToPublish();
|
||||||
|
// }
|
||||||
|
|
||||||
|
// /**
|
||||||
|
// * Short the current path if needed TODO
|
||||||
|
// */
|
||||||
|
// private void breadcrumbsUpdater(){
|
||||||
|
//
|
||||||
|
// // ignore first and last elem
|
||||||
|
// boolean reduce = (pathListBeans.size() - 2) > PATH_THRESHOLD;
|
||||||
|
//
|
||||||
|
// GWT.log("List is " + pathListBeans.toString());
|
||||||
|
//
|
||||||
|
// if(!reduce){
|
||||||
|
// GWT.log("Restore");
|
||||||
|
// for(int i = 1; i < pathListBeans.size(); i++){
|
||||||
|
// PathBean bean = pathListBeans.get(i);
|
||||||
|
// 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.link.setText("...");
|
||||||
|
// bean.link.setVisible(true);
|
||||||
|
// }else{
|
||||||
|
// bean.link.setText(bean.resourceFolder.getName());
|
||||||
|
// bean.link.setVisible(false);
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// GWT.log("Updated list is " + pathListBeans.toString());
|
||||||
|
// }
|
||||||
}
|
}
|
|
@ -2,42 +2,49 @@
|
||||||
<ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder"
|
<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:g="urn:import:com.google.gwt.user.client.ui" xmlns:b="urn:import:com.github.gwtbootstrap.client.ui">
|
||||||
<ui:style>
|
<ui:style>
|
||||||
.right-vertical-panel {
|
|
||||||
margin-top: 30px;
|
|
||||||
margin-left: 0px;
|
|
||||||
}
|
|
||||||
</ui:style>
|
</ui:style>
|
||||||
<g:HTMLPanel>
|
<g:HTMLPanel>
|
||||||
<g:SimplePanel width="100%">
|
<b:FluidContainer ui:field="mainContainerResourcesSelection">
|
||||||
<b:Popover ui:field="popoverResourceSelection" html="true">
|
<b:FluidRow>
|
||||||
<b:Button ui:field="resourceInfoButton" type="LINK" icon="INFO_SIGN" size="LARGE"></b:Button>
|
<b:Column offset="6" size="1">
|
||||||
</b:Popover>
|
<b:Popover ui:field="popoverResourceSelection" html="true">
|
||||||
</g:SimplePanel>
|
<b:Button ui:field="resourceInfoButton" type="LINK" icon="INFO_SIGN"
|
||||||
<b:FluidContainer>
|
size="LARGE"></b:Button>
|
||||||
|
</b:Popover>
|
||||||
|
</b:Column>
|
||||||
|
</b:FluidRow>
|
||||||
|
<b:FluidRow>
|
||||||
|
<b:Column size="7">
|
||||||
|
<b:Breadcrumbs ui:field="breadcrumbs" divider=">">
|
||||||
|
</b:Breadcrumbs>
|
||||||
|
</b:Column>
|
||||||
|
</b:FluidRow>
|
||||||
<b:FluidRow>
|
<b:FluidRow>
|
||||||
<b:Column size="3" ui:field="leftColumn">
|
<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="goRootButton">Root
|
||||||
<b:Button enabled="true" type="LINK" ui:field="goUpButton">Go up</b:Button>
|
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 ui:field="leftContainer" width="100%">
|
||||||
</g:VerticalPanel>
|
</g:VerticalPanel>
|
||||||
</b:Column>
|
</b:Column>
|
||||||
<b:Column size="1" ui:field="centralPanel">
|
<b:Column size="1" ui:field="centralPanel">
|
||||||
<g:VerticalPanel ui:field="buttonsPanel">
|
<g:VerticalPanel ui:field="buttonsPanel">
|
||||||
<b:Button ui:field="allToRightButton" name="toRight"
|
<b:Button ui:field="allToRightButton" name="toRight"
|
||||||
enabled="false" title="Move selected files to right" text=">>" />
|
enabled="false" title="Add selected files" text=">>" />
|
||||||
<b:Button ui:field="toRightButton" name="toRight"
|
<b:Button ui:field="toRightButton" name="toRight"
|
||||||
enabled="false" title="Move selected file to the right" text=">" />
|
enabled="false" title="Add selected file" text=">" />
|
||||||
<b:Button ui:field="toLeftButton" name="toLeft" enabled="false"
|
<b:Button ui:field="toLeftButton" name="toLeft" enabled="false"
|
||||||
title="Move selected file to the left" text="<" />
|
title="Remove selected file" text="<" />
|
||||||
<b:Button ui:field="allToLeftButton" name="toRight"
|
<b:Button ui:field="allToLeftButton" name="toRight"
|
||||||
enabled="false" title="Move selected files to left" text="<<" />
|
enabled="false" title="Remove selected files" text="<<" />
|
||||||
</g:VerticalPanel>
|
</g:VerticalPanel>
|
||||||
</b:Column>
|
</b:Column>
|
||||||
<b:Column size="3" ui:field="rightColumn">
|
<b:Column size="3" ui:field="rightColumn">
|
||||||
<g:VerticalPanel ui:field="rightContainer"
|
<g:VerticalPanel ui:field="rightContainer" width="100%"></g:VerticalPanel>
|
||||||
styleName="{style.right-vertical-panel}" width="100%"></g:VerticalPanel>
|
|
||||||
</b:Column>
|
</b:Column>
|
||||||
</b:FluidRow>
|
</b:FluidRow>
|
||||||
</b:FluidContainer>
|
</b:FluidContainer>
|
||||||
|
<!-- <b:Button ui:field="getResources">Get Resources</b:Button> -->
|
||||||
</g:HTMLPanel>
|
</g:HTMLPanel>
|
||||||
</ui:UiBinder>
|
</ui:UiBinder>
|
|
@ -0,0 +1,13 @@
|
||||||
|
package org.gcube.portlets.widgets.ckandatapublisherwidget.client.ui.icons;
|
||||||
|
|
||||||
|
import com.google.gwt.resources.client.ClientBundle;
|
||||||
|
import com.google.gwt.resources.client.ImageResource;
|
||||||
|
|
||||||
|
public interface Images extends ClientBundle {
|
||||||
|
|
||||||
|
@Source("file.png")
|
||||||
|
ImageResource fileIcon();
|
||||||
|
|
||||||
|
@Source("folder.png")
|
||||||
|
ImageResource folderIcon();
|
||||||
|
}
|
Binary file not shown.
After Width: | Height: | Size: 1.2 KiB |
Binary file not shown.
After Width: | Height: | Size: 527 B |
|
@ -32,10 +32,8 @@ public class GcubeDialogExtended extends GCubeDialog {
|
||||||
FlexTable captionLayoutTable = new FlexTable();
|
FlexTable captionLayoutTable = new FlexTable();
|
||||||
captionLayoutTable.setText(0, 0, captionText);
|
captionLayoutTable.setText(0, 0, captionText);
|
||||||
captionLayoutTable.setWidget(0, 3, closeAnchor);
|
captionLayoutTable.setWidget(0, 3, closeAnchor);
|
||||||
captionLayoutTable.getCellFormatter().setHorizontalAlignment(0, 3,
|
captionLayoutTable.getCellFormatter().setHorizontalAlignment(0, 3, HasHorizontalAlignment.ALIGN_RIGHT);
|
||||||
HasHorizontalAlignment.ALIGN_RIGHT);
|
|
||||||
captionLayoutTable.setWidth("100%");
|
captionLayoutTable.setWidth("100%");
|
||||||
|
|
||||||
HTML caption = (HTML) getCaption();
|
HTML caption = (HTML) getCaption();
|
||||||
caption.getElement().getStyle().setCursor(Cursor.MOVE);
|
caption.getElement().getStyle().setCursor(Cursor.MOVE);
|
||||||
caption.getElement().appendChild(captionLayoutTable.getElement());
|
caption.getElement().appendChild(captionLayoutTable.getElement());
|
||||||
|
@ -56,13 +54,9 @@ public class GcubeDialogExtended extends GCubeDialog {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onClick(ClickEvent event) {
|
public void onClick(ClickEvent event) {
|
||||||
|
|
||||||
hide();
|
hide();
|
||||||
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
// set the text
|
|
||||||
add(new Paragraph(text));
|
add(new Paragraph(text));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -68,7 +68,7 @@ public class InfoIconsLabels {
|
||||||
// RESOURCES
|
// RESOURCES
|
||||||
public static final String RESOURCES_INFO_ID_POPUP = "resouces-popup-panel-info";
|
public static final String RESOURCES_INFO_ID_POPUP = "resouces-popup-panel-info";
|
||||||
public static final String RESOURCES_INFO_CAPTION = "Product Resources";
|
public static final String RESOURCES_INFO_CAPTION = "Product Resources";
|
||||||
public static final String RESOURCES_INFO_TEXT = "Folder content will be added as resources of the product";
|
public static final String RESOURCES_INFO_TEXT = "Manage the resources you want to associate to the product.";
|
||||||
|
|
||||||
// CUSTOM FIELDS
|
// CUSTOM FIELDS
|
||||||
public static final String CUSTOM_FIELDS_INFO_ID_POPUP = "custom-fields-popup-panel-info";
|
public static final String CUSTOM_FIELDS_INFO_ID_POPUP = "custom-fields-popup-panel-info";
|
||||||
|
|
|
@ -66,7 +66,7 @@ public class CKANPublisherServicesImpl extends RemoteServiceServlet implements C
|
||||||
logger.debug("Discovering ckan instance into scope " + scopeInWhichDiscover);
|
logger.debug("Discovering ckan instance into scope " + scopeInWhichDiscover);
|
||||||
instance = DataCatalogueFactory.getFactory().getUtilsPerScope(scopeInWhichDiscover);
|
instance = DataCatalogueFactory.getFactory().getUtilsPerScope(scopeInWhichDiscover);
|
||||||
}catch(Exception e){
|
}catch(Exception e){
|
||||||
logger.error("Unable to retrieve ckan utils in scope " + scopeInWhichDiscover, e);
|
logger.warn("Unable to retrieve ckan utils in scope " + scopeInWhichDiscover + ". Error is " + e.toString());
|
||||||
}
|
}
|
||||||
return instance;
|
return instance;
|
||||||
}
|
}
|
||||||
|
@ -366,7 +366,7 @@ public class CKANPublisherServicesImpl extends RemoteServiceServlet implements C
|
||||||
|
|
||||||
// we need to copy such resource in the .catalogue area of the user's ws
|
// we need to copy such resource in the .catalogue area of the user's ws
|
||||||
if(resourcesToAdd != null && !resourcesToAdd.isEmpty()){
|
if(resourcesToAdd != null && !resourcesToAdd.isEmpty()){
|
||||||
resources = WorkspaceUtils.copyResourcesToUserCatalogueArea(resourcesToAdd, toCreate.getId(), userName, toCreate);
|
resources = WorkspaceUtils.copyResourcesToUserCatalogueArea(toCreate.getId(), userName, toCreate);
|
||||||
}
|
}
|
||||||
|
|
||||||
logger.debug("The user wants to publish in organization with name " + organizationNameOrId);
|
logger.debug("The user wants to publish in organization with name " + organizationNameOrId);
|
||||||
|
@ -580,7 +580,7 @@ public class CKANPublisherServicesImpl extends RemoteServiceServlet implements C
|
||||||
return toReturn;
|
return toReturn;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
//
|
||||||
// @Override
|
// @Override
|
||||||
// public ResourceElementBean getTreeFolder(String folderId) {
|
// public ResourceElementBean getTreeFolder(String folderId) {
|
||||||
//
|
//
|
||||||
|
@ -598,7 +598,6 @@ public class CKANPublisherServicesImpl extends RemoteServiceServlet implements C
|
||||||
// return toReturn;
|
// return toReturn;
|
||||||
// }else{
|
// }else{
|
||||||
// if(session.getUsername().equals(TEST_USER)){
|
// if(session.getUsername().equals(TEST_USER)){
|
||||||
// logger.warn("SESSION EXPIRED!");
|
|
||||||
// return null;
|
// return null;
|
||||||
// }else{
|
// }else{
|
||||||
// // TODO
|
// // TODO
|
||||||
|
@ -610,7 +609,7 @@ public class CKANPublisherServicesImpl extends RemoteServiceServlet implements C
|
||||||
// }
|
// }
|
||||||
// return null;
|
// return null;
|
||||||
// }
|
// }
|
||||||
|
//
|
||||||
// /**
|
// /**
|
||||||
// * Retrieve the workspace for the development user
|
// * Retrieve the workspace for the development user
|
||||||
// * @return
|
// * @return
|
||||||
|
|
|
@ -64,7 +64,7 @@ public class Utils {
|
||||||
// Logger
|
// Logger
|
||||||
private static final org.slf4j.Logger logger = LoggerFactory.getLogger(Utils.class);
|
private static final org.slf4j.Logger logger = LoggerFactory.getLogger(Utils.class);
|
||||||
private static final String APPLICATION_ID_CATALOGUE_MANAGER = "org.gcube.datacatalogue.ProductCatalogue";
|
private static final String APPLICATION_ID_CATALOGUE_MANAGER = "org.gcube.datacatalogue.ProductCatalogue";
|
||||||
private static final String NOTIFICATION_MESSAGE = "Dear members,<br>The product <b></em>PRODUCT_TITLE</em></b> has been just published by <b>USER_FULLNAME</b>.<br>You can find it here: PRODUCT_URL <br>";
|
private static final String NOTIFICATION_MESSAGE = "Dear members,<br>The product PRODUCT_TITLE has been just published by USER_FULLNAME.<br>You can find it here: PRODUCT_URL <br>";
|
||||||
private static final String SOCIAL_SERVICE_APPLICATION_TOKEN = "2/tokens/generate-application-token/";
|
private static final String SOCIAL_SERVICE_APPLICATION_TOKEN = "2/tokens/generate-application-token/";
|
||||||
private static final String SOCIAL_SERVICE_WRITE_APPLICATION_POST = "2/posts/write-post-app/";
|
private static final String SOCIAL_SERVICE_WRITE_APPLICATION_POST = "2/posts/write-post-app/";
|
||||||
private static final String MEDIATYPE_JSON = "application/json";
|
private static final String MEDIATYPE_JSON = "application/json";
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
package org.gcube.portlets.widgets.ckandatapublisherwidget.server.utils;
|
package org.gcube.portlets.widgets.ckandatapublisherwidget.server.utils;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
|
@ -18,25 +19,24 @@ import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
public class WorkspaceUtils {
|
public class WorkspaceUtils {
|
||||||
|
|
||||||
/**
|
|
||||||
* logger
|
|
||||||
*/
|
|
||||||
private static final org.slf4j.Logger logger = LoggerFactory.getLogger(WorkspaceUtils.class);
|
private static final org.slf4j.Logger logger = LoggerFactory.getLogger(WorkspaceUtils.class);
|
||||||
|
private static final String RESOURCES_NAME_SEPARATOR = "_";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Copy into the .catalogue area folder the checked resources
|
* Copy into the .catalogue area folder the checked resources
|
||||||
* @param resourcesToAdd
|
|
||||||
* @param folderId
|
* @param folderId
|
||||||
* @param userName
|
* @param userName
|
||||||
* @param bean
|
* @param bean
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
public static List<ResourceBean> copyResourcesToUserCatalogueArea(List<ResourceElementBean> resourcesToAdd, String folderId, String userName, DatasetMetadataBean bean) throws Exception{
|
public static List<ResourceBean> copyResourcesToUserCatalogueArea(String folderId, String userName, DatasetMetadataBean bean) throws Exception{
|
||||||
|
|
||||||
logger.debug("Request to copy onto catalogue area....");
|
logger.debug("Request to copy onto catalogue area....");
|
||||||
List<ResourceBean> resources = new ArrayList<ResourceBean>();
|
List<ResourceBean> resources = new ArrayList<ResourceBean>();
|
||||||
WorkspaceItem copiedFolder = null;
|
WorkspaceItem copiedFolder = null;
|
||||||
WorkspaceCatalogue userCatalogue = null;
|
WorkspaceCatalogue userCatalogue = null;
|
||||||
|
List<ResourceElementBean> resourcesToAdd = bean.getResources();
|
||||||
|
|
||||||
// in to the .catalogue area of the user's workspace
|
// in to the .catalogue area of the user's workspace
|
||||||
Workspace ws = HomeLibrary
|
Workspace ws = HomeLibrary
|
||||||
|
@ -58,19 +58,19 @@ public class WorkspaceUtils {
|
||||||
((WorkspaceFolder)copiedFolder).rename(org.gcube.datacatalogue.ckanutillibrary.utils.UtilMethods.fromProductTitleToName(bean.getTitle()) + "_" + System.currentTimeMillis());
|
((WorkspaceFolder)copiedFolder).rename(org.gcube.datacatalogue.ckanutillibrary.utils.UtilMethods.fromProductTitleToName(bean.getTitle()) + "_" + System.currentTimeMillis());
|
||||||
|
|
||||||
// copy only the selected ones
|
// copy only the selected ones
|
||||||
for(ResourceElementBean resourceBeanWrapper : resourcesToAdd){
|
for(ResourceElementBean resource : resourcesToAdd){
|
||||||
|
|
||||||
if (resourceBeanWrapper.isToBeAdded()) {
|
if (resource.isToBeAdded()) {
|
||||||
|
|
||||||
// ok it is a file, so copy it into the copiedFolder
|
// ok it is a file, so copy it into the copiedFolder
|
||||||
WorkspaceItem copiedFile = userCatalogue.addWorkspaceItem(resourceBeanWrapper.getOriginalIdInWorkspace(), copiedFolder.getId());
|
WorkspaceItem copiedFile = userCatalogue.addWorkspaceItem(resource.getOriginalIdInWorkspace(), copiedFolder.getId());
|
||||||
|
|
||||||
// name and description could have been edited
|
// name and description could have been edited
|
||||||
copiedFile.setDescription(resourceBeanWrapper.getDescription());
|
copiedFile.setDescription(resource.getDescription());
|
||||||
|
|
||||||
resources.add(new ResourceBean(
|
resources.add(new ResourceBean(
|
||||||
copiedFile.getPublicLink(true),
|
copiedFile.getPublicLink(true),
|
||||||
resourceBeanWrapper.getName(),
|
resource.getName(),
|
||||||
copiedFile.getDescription(),
|
copiedFile.getDescription(),
|
||||||
copiedFile.getId(),
|
copiedFile.getId(),
|
||||||
userName,
|
userName,
|
||||||
|
@ -78,7 +78,7 @@ public class WorkspaceUtils {
|
||||||
((FolderItem)copiedFile).getMimeType()));
|
((FolderItem)copiedFile).getMimeType()));
|
||||||
|
|
||||||
// postpone rename operation
|
// postpone rename operation
|
||||||
copiedFile.rename(resourceBeanWrapper.getName() + "_" + System.currentTimeMillis());
|
copiedFile.rename(resource.getName() + "_" + System.currentTimeMillis());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -116,7 +116,7 @@ public class WorkspaceUtils {
|
||||||
bean.setCustomFields(folderItems);
|
bean.setCustomFields(folderItems);
|
||||||
|
|
||||||
// set them into the bean
|
// set them into the bean
|
||||||
bean.setResources(WorkspaceUtils.getTreeFromFolder(folderId, ws).getChildren());
|
bean.setResources(Arrays.asList(WorkspaceUtils.getTreeFromFolder(folderId, ws)));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -131,24 +131,41 @@ public class WorkspaceUtils {
|
||||||
|
|
||||||
// start tree construction
|
// start tree construction
|
||||||
ResourceElementBean rootElem = new ResourceElementBean();
|
ResourceElementBean rootElem = new ResourceElementBean();
|
||||||
|
String pathSeparator = ws.getPathSeparator();
|
||||||
try{
|
try{
|
||||||
WorkspaceItem initialItemWS = ws.getItem(workspaceFolderId);
|
WorkspaceItem initialItemWS = ws.getItem(workspaceFolderId);
|
||||||
String fullPathBase = initialItemWS.getPath();
|
String fullPathBase = initialItemWS.getPath();
|
||||||
// rootElem.setFolder(initialItemWS.isFolder());
|
fullPathBase = fullPathBase.endsWith(ws.getPathSeparator()) ? fullPathBase : fullPathBase + ws.getPathSeparator();
|
||||||
// rootElem.setFullPath(initialItemWS.getPath().replace(fullPathBase, ""));
|
rootElem.setFolder(initialItemWS.isFolder());
|
||||||
// rootElem.setParent(null);
|
rootElem.setFullPath(initialItemWS.getPath().replace(fullPathBase, ""));
|
||||||
// rootElem.setName(initialItemWS.getName());
|
rootElem.setParent(null);
|
||||||
// rootElem.setOriginalIdInWorkspace(initialItemWS.getId());
|
rootElem.setName(initialItemWS.getName());
|
||||||
// rootElem.setToBeAdded(false);
|
rootElem.setOriginalIdInWorkspace(initialItemWS.getId());
|
||||||
// rootElem.setMimeType(((FolderItem)initialItemWS).getMimeType());
|
replaceFullPath(rootElem, pathSeparator);
|
||||||
// rootElem.setDescription(initialItemWS.getDescription());
|
|
||||||
// start visiting
|
// start visiting
|
||||||
visit(rootElem, initialItemWS, fullPathBase);
|
visit(rootElem, initialItemWS, fullPathBase, pathSeparator);
|
||||||
return rootElem;
|
|
||||||
}catch(Exception e){
|
}catch(Exception e){
|
||||||
logger.error("Failed to build the resource tree", e);
|
logger.error("Failed to build the resource tree", e);
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
return rootElem;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Replaces the "/" char with a custom one
|
||||||
|
* @param rootElem
|
||||||
|
* @param pathSeparatorInWs
|
||||||
|
*/
|
||||||
|
private static void replaceFullPath(ResourceElementBean rootElem, String pathSeparatorInWs) {
|
||||||
|
|
||||||
|
if(rootElem == null)
|
||||||
|
return;
|
||||||
|
|
||||||
|
String elemName = rootElem.getName();
|
||||||
|
int lastIndex = rootElem.getFullPath().lastIndexOf(elemName);
|
||||||
|
String fullPath = rootElem.getFullPath().substring(0, lastIndex);
|
||||||
|
fullPath = fullPath.replaceAll(pathSeparatorInWs, RESOURCES_NAME_SEPARATOR) + elemName;
|
||||||
|
rootElem.setFullPath(fullPath);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -157,18 +174,19 @@ public class WorkspaceUtils {
|
||||||
* @param initialItemWS
|
* @param initialItemWS
|
||||||
* @throws InternalErrorException
|
* @throws InternalErrorException
|
||||||
*/
|
*/
|
||||||
private static void visit(ResourceElementBean rootElem, WorkspaceItem initialItemWS, String fullPathBase) throws InternalErrorException {
|
private static void visit(ResourceElementBean rootElem, WorkspaceItem initialItemWS, String fullPathBase, String pathSeparator) throws InternalErrorException {
|
||||||
List<? extends WorkspaceItem> children = initialItemWS.getChildren();
|
List<? extends WorkspaceItem> children = initialItemWS.getChildren();
|
||||||
ArrayList<ResourceElementBean> childrenInTree = new ArrayList<ResourceElementBean>(children.size());
|
ArrayList<ResourceElementBean> childrenInTree = new ArrayList<ResourceElementBean>(children.size());
|
||||||
for (WorkspaceItem workspaceItem : children) {
|
for (WorkspaceItem workspaceItem : children) {
|
||||||
ResourceElementBean elem = new ResourceElementBean();
|
ResourceElementBean elem = new ResourceElementBean();
|
||||||
elem.setFolder(workspaceItem.isFolder());
|
elem.setFolder(workspaceItem.isFolder());
|
||||||
elem.setOriginalIdInWorkspace(workspaceItem.getId());
|
elem.setOriginalIdInWorkspace(workspaceItem.getId());
|
||||||
elem.setFullPath(workspaceItem.getPath().replace(fullPathBase, "")); // remove this path
|
elem.setFullPath(workspaceItem.getPath().replace(fullPathBase, ""));
|
||||||
elem.setParent(rootElem);
|
elem.setParent(rootElem);
|
||||||
elem.setName(workspaceItem.getName());
|
elem.setName(workspaceItem.getName());
|
||||||
|
replaceFullPath(elem, pathSeparator);
|
||||||
childrenInTree.add(elem);
|
childrenInTree.add(elem);
|
||||||
visit(elem, workspaceItem, fullPathBase);
|
visit(elem, workspaceItem, fullPathBase, pathSeparator);
|
||||||
}
|
}
|
||||||
rootElem.setChildren(childrenInTree);
|
rootElem.setChildren(childrenInTree);
|
||||||
}
|
}
|
||||||
|
|
|
@ -39,6 +39,19 @@ public class ResourceElementBean implements Comparable<ResourceElementBean>, Ser
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Copy constructor
|
||||||
|
* @param another
|
||||||
|
*/
|
||||||
|
public ResourceElementBean(ResourceElementBean another) {
|
||||||
|
this.name = another.name;
|
||||||
|
this.originalIdInWorkspace = another.originalIdInWorkspace;
|
||||||
|
this.mimeType = another.mimeType;
|
||||||
|
this.url = another.url;
|
||||||
|
this.description = another.description;
|
||||||
|
this.organizationNameDatasetParent = another.organizationNameDatasetParent;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Default constructor
|
* Default constructor
|
||||||
*/
|
*/
|
||||||
|
@ -193,14 +206,6 @@ public class ResourceElementBean implements Comparable<ResourceElementBean>, Ser
|
||||||
this.originalIdInWorkspace = originalIdInWorkspace;
|
this.originalIdInWorkspace = originalIdInWorkspace;
|
||||||
}
|
}
|
||||||
|
|
||||||
// @Override
|
|
||||||
// public String toString() {
|
|
||||||
// return "ResourceElementBean [identifier=" + identifier + ", name="
|
|
||||||
// + name + ", movedToRight=" + movedToRight + ", isFolder="
|
|
||||||
// + isFolder + ", fullPath=" + fullPath + "]";
|
|
||||||
// }
|
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean equals(Object o) {
|
public boolean equals(Object o) {
|
||||||
boolean toReturn = false;
|
boolean toReturn = false;
|
||||||
|
@ -213,9 +218,9 @@ public class ResourceElementBean implements Comparable<ResourceElementBean>, Ser
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
return "ResourceElementBean [identifierGWT=" + identifierGWT + ", name="
|
return "ResourceElementBean [identifierGWT=" + identifierGWT
|
||||||
+ name + ", toBeAdded=" + toBeAdded + ", isFolder=" + isFolder
|
+ ", name=" + name + ", toBeAdded=" + toBeAdded + ", isFolder="
|
||||||
+ ", parent=" + parent + ", childrenSize=" + children.size()
|
+ isFolder + ", parent=" + parent + ", children number=" + (children == null ? 0 : children.size())
|
||||||
+ ", fullPath=" + fullPath + ", originalIdInWorkspace="
|
+ ", fullPath=" + fullPath + ", originalIdInWorkspace="
|
||||||
+ originalIdInWorkspace + ", mimeType=" + mimeType + ", url="
|
+ originalIdInWorkspace + ", mimeType=" + mimeType + ", url="
|
||||||
+ url + ", description=" + description
|
+ url + ", description=" + description
|
||||||
|
|
|
@ -1,249 +1,17 @@
|
||||||
package org.gcube.portlets.widgets.ckandatapublisherwidget.client;
|
package org.gcube.portlets.widgets.ckandatapublisherwidget.client;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.Arrays;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import org.gcube.common.authorization.library.provider.SecurityTokenProvider;
|
|
||||||
import org.gcube.common.homelibrary.home.HomeLibrary;
|
|
||||||
import org.gcube.common.homelibrary.home.exceptions.HomeNotFoundException;
|
|
||||||
import org.gcube.common.homelibrary.home.exceptions.InternalErrorException;
|
|
||||||
import org.gcube.common.homelibrary.home.exceptions.UserNotFoundException;
|
|
||||||
import org.gcube.common.homelibrary.home.workspace.Workspace;
|
|
||||||
import org.gcube.common.homelibrary.home.workspace.WorkspaceFolder;
|
|
||||||
import org.gcube.common.homelibrary.home.workspace.WorkspaceItem;
|
|
||||||
import org.gcube.common.homelibrary.home.workspace.catalogue.WorkspaceCatalogue;
|
|
||||||
import org.gcube.common.homelibrary.home.workspace.exceptions.ItemNotFoundException;
|
|
||||||
import org.gcube.common.homelibrary.home.workspace.exceptions.WorkspaceFolderNotFoundException;
|
|
||||||
import org.gcube.common.scope.api.ScopeProvider;
|
|
||||||
import org.gcube.datacatalogue.metadatadiscovery.DataCalogueMetadataFormatReader;
|
|
||||||
import org.gcube.datacatalogue.metadatadiscovery.bean.MetadataType;
|
|
||||||
import org.gcube.datacatalogue.metadatadiscovery.bean.jaxb.MetadataField;
|
|
||||||
import org.gcube.datacatalogue.metadatadiscovery.bean.jaxb.MetadataFormat;
|
|
||||||
import org.gcube.datacatalogue.metadatadiscovery.bean.jaxb.MetadataValidator;
|
|
||||||
import org.gcube.datacatalogue.metadatadiscovery.bean.jaxb.MetadataVocabulary;
|
|
||||||
import org.gcube.portlets.widgets.ckandatapublisherwidget.server.CKANPublisherServicesImpl;
|
import org.gcube.portlets.widgets.ckandatapublisherwidget.server.CKANPublisherServicesImpl;
|
||||||
import org.gcube.portlets.widgets.ckandatapublisherwidget.server.utils.Utils;
|
|
||||||
import org.gcube.portlets.widgets.ckandatapublisherwidget.shared.DataType;
|
|
||||||
import org.gcube.portlets.widgets.ckandatapublisherwidget.shared.MetaDataTypeWrapper;
|
|
||||||
import org.gcube.portlets.widgets.ckandatapublisherwidget.shared.MetadataFieldWrapper;
|
|
||||||
import org.gcube.portlets.widgets.ckandatapublisherwidget.shared.ResourceElementBean;
|
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.slf4j.LoggerFactory;
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Junit tests class
|
||||||
|
* @author Costantino Perciante at ISTI-CNR (costantino.perciante@isti.cnr.it)
|
||||||
|
*/
|
||||||
public class TestClass {
|
public class TestClass {
|
||||||
|
|
||||||
private static final org.slf4j.Logger logger = LoggerFactory.getLogger(TestClass.class);
|
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testUser() {
|
public void testUser() {
|
||||||
|
|
||||||
assert(new CKANPublisherServicesImpl().getDevelopmentUser().equals(CKANPublisherServicesImpl.TEST_USER));
|
assert(new CKANPublisherServicesImpl().getDevelopmentUser().equals(CKANPublisherServicesImpl.TEST_USER));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//@Test
|
|
||||||
@SuppressWarnings("deprecation")
|
|
||||||
public void testCopyResources() throws WorkspaceFolderNotFoundException, InternalErrorException, HomeNotFoundException, UserNotFoundException, ItemNotFoundException{
|
|
||||||
|
|
||||||
ScopeProvider.instance.set("/gcube/devNext/NextNext");
|
|
||||||
|
|
||||||
Workspace ws = HomeLibrary
|
|
||||||
.getHomeManagerFactory()
|
|
||||||
.getHomeManager()
|
|
||||||
.getHome("costantino.perciante").getWorkspace();
|
|
||||||
|
|
||||||
WorkspaceItem originalFolder = ws.getItem("d3a37eb9-1589-4c95-a9d0-c473a02d4f0f");
|
|
||||||
|
|
||||||
List<? extends WorkspaceItem> children = originalFolder.getChildren();
|
|
||||||
// System.out.println("Folder is " + originalFolder.getName());
|
|
||||||
// for (WorkspaceItem workspaceItem : children) {
|
|
||||||
// System.out.println("Child is " + workspaceItem.getName());
|
|
||||||
// }
|
|
||||||
|
|
||||||
// copy to catalogue
|
|
||||||
WorkspaceCatalogue userCatalogue = ws.getCatalogue();
|
|
||||||
|
|
||||||
WorkspaceItem copiedFolder = userCatalogue.addWorkspaceItem(originalFolder.getId(), userCatalogue.getId());
|
|
||||||
System.out.println(copiedFolder.isHidden());
|
|
||||||
// for (WorkspaceItem workspaceItem : children) {
|
|
||||||
// WorkspaceItem copiedChildren = userCatalogue.addWorkspaceItem(workspaceItem.getId(), copiedFolder.getId());
|
|
||||||
// System.out.println("****************************** Copied file has path " + copiedChildren.getPath());
|
|
||||||
// }
|
|
||||||
|
|
||||||
// look at catalogue structure
|
|
||||||
List<WorkspaceItem> catalogueChildrens = ((WorkspaceFolder)userCatalogue).getChildren(true);
|
|
||||||
if(catalogueChildrens.isEmpty())
|
|
||||||
System.out.println("****************************** Catalogue Child list is empty");
|
|
||||||
else for (WorkspaceItem catalogueItem : catalogueChildrens) {
|
|
||||||
System.out.println("****************************** Catalogue Child is " + catalogueItem.getName());
|
|
||||||
if(catalogueItem.isFolder()){
|
|
||||||
WorkspaceFolder catalogueFolder = (WorkspaceFolder) catalogueItem;
|
|
||||||
System.out.println("**************************" + catalogueFolder.getName() + " it is a folder, printing children");
|
|
||||||
List<? extends WorkspaceItem> copiedFolderChildren = catalogueFolder.getChildren(true);
|
|
||||||
for (WorkspaceItem copiedFolderChildrenItem : copiedFolderChildren) {
|
|
||||||
System.out.println("****************************** Child is " + copiedFolderChildrenItem.getName());
|
|
||||||
copiedFolderChildrenItem.getPublicLink(true);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//@Test
|
|
||||||
public void testTitle(){
|
|
||||||
|
|
||||||
// String regexTitleSubWord = "[^a-zA-Z0-9_.-]";
|
|
||||||
// String title = "this is a test title .";
|
|
||||||
// String[] splittedTitle = title.split(" ");
|
|
||||||
//
|
|
||||||
// for (String word : splittedTitle) {
|
|
||||||
// System.out.println("Word is " + word);
|
|
||||||
// String replaced = word.replaceAll(regexTitleSubWord, "");
|
|
||||||
// System.out.println("Replaced Word is " + replaced);
|
|
||||||
// if(!replaced.equals(word)){
|
|
||||||
// System.out.println("Please note that only alphanumeric characters are allowed for the title");
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
|
|
||||||
System.out.println("Notification_portlet".replaceAll("[^A-Za-z0-9.-_]", " "));
|
|
||||||
}
|
|
||||||
|
|
||||||
//@Test
|
|
||||||
public void retrieveMetadata(){
|
|
||||||
|
|
||||||
try {
|
|
||||||
|
|
||||||
ScopeProvider.instance.set("/gcube/devNext/NextNext");
|
|
||||||
|
|
||||||
DataCalogueMetadataFormatReader reader = new DataCalogueMetadataFormatReader();
|
|
||||||
|
|
||||||
for (MetadataType mt : reader.getListOfMetadataTypes()) {
|
|
||||||
|
|
||||||
System.out.println("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + mt.getName());
|
|
||||||
MetadataFormat metadata = reader.getMetadataFormatForMetadataType(mt);
|
|
||||||
|
|
||||||
// we need to wrap the list of metadata
|
|
||||||
List<MetadataFieldWrapper> wrapperList = new ArrayList<MetadataFieldWrapper>();
|
|
||||||
List<MetadataField> toWrap = metadata.getMetadataFields();
|
|
||||||
|
|
||||||
for(MetadataField metadataField: toWrap){
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
MetadataFieldWrapper wrapperObj = new MetadataFieldWrapper();
|
|
||||||
wrapperObj.setDefaultValue(metadataField.getDefaultValue());
|
|
||||||
wrapperObj.setFieldName(metadataField.getFieldName());
|
|
||||||
wrapperObj.setType(DataType.valueOf(metadataField.getDataType().toString()));
|
|
||||||
wrapperObj.setMandatory(metadataField.getMandatory());
|
|
||||||
wrapperObj.setNote(metadataField.getNote());
|
|
||||||
|
|
||||||
MetadataValidator validator = metadataField.getValidator();
|
|
||||||
if(validator != null)
|
|
||||||
wrapperObj.setValidator(validator.getRegularExpression());
|
|
||||||
|
|
||||||
MetadataVocabulary vocabulary = metadataField.getVocabulary();
|
|
||||||
|
|
||||||
if(vocabulary != null){
|
|
||||||
wrapperObj.setVocabulary(vocabulary.getVocabularyFields());
|
|
||||||
wrapperObj.setMultiSelection(vocabulary.isMultiSelection());
|
|
||||||
}
|
|
||||||
|
|
||||||
// add to the list
|
|
||||||
wrapperList.add(wrapperObj);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
// wrap the mt as well
|
|
||||||
MetaDataTypeWrapper typeWrapper = new MetaDataTypeWrapper();
|
|
||||||
typeWrapper.setDescription(mt.getDescription());
|
|
||||||
typeWrapper.setId(mt.getId());
|
|
||||||
typeWrapper.setName(mt.getName());
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
System.out.println("List of profiles has been saved into session");
|
|
||||||
|
|
||||||
} catch (Exception e) {
|
|
||||||
System.out.println("Error while retrieving metadata beans " + e);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
//@Test
|
|
||||||
public void testDataCatalogueManagerApplication(){
|
|
||||||
|
|
||||||
String token = "";
|
|
||||||
String scope = "/gcube/devNext/NextNext";
|
|
||||||
|
|
||||||
ScopeProvider.instance.set(scope);
|
|
||||||
SecurityTokenProvider.instance.set(token);
|
|
||||||
|
|
||||||
Utils.writeProductPost("a great test product",
|
|
||||||
"https://next.d4science.org/group/nextnext/data-catalogue?path=/dataset/test_for_visibility",
|
|
||||||
"Costantino Perciante", Arrays.asList("tag1", "tag2", "tag33"), false);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
//@Test
|
|
||||||
public void treeVisitorTest() throws Exception{
|
|
||||||
|
|
||||||
ScopeProvider.instance.set("/gcube/devNext/NextNext");
|
|
||||||
String itemName = "CkanTest1137";
|
|
||||||
String itemId = null;
|
|
||||||
|
|
||||||
Workspace ws = HomeLibrary
|
|
||||||
.getHomeManagerFactory()
|
|
||||||
.getHomeManager()
|
|
||||||
.getHome("costantino.perciante").getWorkspace();
|
|
||||||
|
|
||||||
List<WorkspaceItem> wsChildren = ws.getRoot().getChildren();
|
|
||||||
|
|
||||||
for (WorkspaceItem workspaceItem : wsChildren) {
|
|
||||||
if(workspaceItem.getName().equals(itemName)){
|
|
||||||
itemId = workspaceItem.getId();
|
|
||||||
logger.debug("Id is " + itemId); //e87bfc7d-4fb0-4795-9c79-0c495500ca9c
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// start tree construction
|
|
||||||
WorkspaceItem initialItemWS = ws.getItem(itemId);
|
|
||||||
ResourceElementBean rootElem = new ResourceElementBean();
|
|
||||||
rootElem.setFolder(initialItemWS.isFolder());
|
|
||||||
rootElem.setFullPath(initialItemWS.getPath());
|
|
||||||
rootElem.setParent(null);
|
|
||||||
rootElem.setName(initialItemWS.getName());
|
|
||||||
rootElem.setOriginalIdInWorkspace(initialItemWS.getId());
|
|
||||||
|
|
||||||
// start visiting
|
|
||||||
visit(rootElem, initialItemWS);
|
|
||||||
|
|
||||||
// print final tree
|
|
||||||
logger.debug("Final tree looks like " + rootElem);
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Recursive visit of a workspace item
|
|
||||||
* @param rootElem
|
|
||||||
* @param initialItemWS
|
|
||||||
* @throws InternalErrorException
|
|
||||||
*/
|
|
||||||
private void visit(ResourceElementBean rootElem, WorkspaceItem initialItemWS) throws InternalErrorException {
|
|
||||||
List<? extends WorkspaceItem> children = initialItemWS.getChildren();
|
|
||||||
ArrayList<ResourceElementBean> childrenInTree = new ArrayList<ResourceElementBean>(children.size());
|
|
||||||
for (WorkspaceItem workspaceItem : children) {
|
|
||||||
ResourceElementBean elem = new ResourceElementBean();
|
|
||||||
elem.setFolder(workspaceItem.isFolder());
|
|
||||||
elem.setOriginalIdInWorkspace(workspaceItem.getId());
|
|
||||||
elem.setFullPath(workspaceItem.getPath());
|
|
||||||
elem.setParent(rootElem);
|
|
||||||
elem.setName(workspaceItem.getName());
|
|
||||||
childrenInTree.add(elem);
|
|
||||||
visit(elem, workspaceItem);
|
|
||||||
}
|
|
||||||
rootElem.setChildren(childrenInTree);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue