workspace-tree-widget/src/main/java/org/gcube/portlets/user/workspace/server/GWTWorkspaceBuilder.java

2044 lines
72 KiB
Java

package org.gcube.portlets.user.workspace.server;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.concurrent.TimeUnit;
import org.apache.log4j.Logger;
import org.gcube.common.homelibrary.home.User;
import org.gcube.common.homelibrary.home.exceptions.InternalErrorException;
import org.gcube.common.homelibrary.home.workspace.Properties;
import org.gcube.common.homelibrary.home.workspace.WorkspaceFolder;
import org.gcube.common.homelibrary.home.workspace.WorkspaceItem;
import org.gcube.common.homelibrary.home.workspace.WorkspaceSmartFolder;
import org.gcube.common.homelibrary.home.workspace.accounting.AccountingEntry;
import org.gcube.common.homelibrary.home.workspace.accounting.AccountingEntryAdd;
import org.gcube.common.homelibrary.home.workspace.accounting.AccountingEntryCreate;
import org.gcube.common.homelibrary.home.workspace.accounting.AccountingEntryCut;
import org.gcube.common.homelibrary.home.workspace.accounting.AccountingEntryPaste;
import org.gcube.common.homelibrary.home.workspace.accounting.AccountingEntryRead;
import org.gcube.common.homelibrary.home.workspace.accounting.AccountingEntryRemoval;
import org.gcube.common.homelibrary.home.workspace.accounting.AccountingEntryRenaming;
import org.gcube.common.homelibrary.home.workspace.accounting.AccountingEntryShare;
import org.gcube.common.homelibrary.home.workspace.accounting.AccountingEntryUnshare;
import org.gcube.common.homelibrary.home.workspace.accounting.AccountingEntryUpdate;
import org.gcube.common.homelibrary.home.workspace.folder.FolderBulkCreator;
import org.gcube.common.homelibrary.home.workspace.folder.FolderItem;
import org.gcube.common.homelibrary.home.workspace.folder.items.AquaMapsItem;
import org.gcube.common.homelibrary.home.workspace.folder.items.ExternalFile;
import org.gcube.common.homelibrary.home.workspace.folder.items.ExternalImage;
import org.gcube.common.homelibrary.home.workspace.folder.items.ExternalPDFFile;
import org.gcube.common.homelibrary.home.workspace.folder.items.ExternalUrl;
import org.gcube.common.homelibrary.home.workspace.folder.items.Query;
import org.gcube.common.homelibrary.home.workspace.folder.items.Report;
import org.gcube.common.homelibrary.home.workspace.folder.items.ReportTemplate;
import org.gcube.common.homelibrary.home.workspace.folder.items.WorkflowReport;
import org.gcube.common.homelibrary.home.workspace.folder.items.WorkflowTemplate;
import org.gcube.common.homelibrary.home.workspace.folder.items.gcube.Document;
import org.gcube.common.homelibrary.home.workspace.folder.items.gcube.DocumentMetadata;
import org.gcube.common.homelibrary.home.workspace.folder.items.gcube.ImageDocument;
import org.gcube.common.homelibrary.home.workspace.folder.items.gcube.Metadata;
import org.gcube.common.homelibrary.home.workspace.folder.items.gcube.PDFDocument;
import org.gcube.common.homelibrary.home.workspace.folder.items.gcube.UrlDocument;
import org.gcube.common.homelibrary.home.workspace.folder.items.ts.TimeSeries;
import org.gcube.common.homelibrary.home.workspace.folder.items.ts.TimeSeriesInfo;
import org.gcube.common.homelibrary.home.workspace.search.SearchFolderItem;
import org.gcube.common.homelibrary.home.workspace.search.SearchItem;
import org.gcube.common.homelibrary.home.workspace.sharing.WorkspaceMessage;
import org.gcube.portlets.user.workspace.client.interfaces.GXTCategoryItemInterface;
import org.gcube.portlets.user.workspace.client.interfaces.GXTFolderItemTypeEnum;
import org.gcube.portlets.user.workspace.client.model.BulkCreatorModel;
import org.gcube.portlets.user.workspace.client.model.FileDetailsModel;
import org.gcube.portlets.user.workspace.client.model.FileGridModel;
import org.gcube.portlets.user.workspace.client.model.FileModel;
import org.gcube.portlets.user.workspace.client.model.FolderGridModel;
import org.gcube.portlets.user.workspace.client.model.FolderModel;
import org.gcube.portlets.user.workspace.client.model.InfoContactModel;
import org.gcube.portlets.user.workspace.client.model.MessageModel;
import org.gcube.portlets.user.workspace.client.model.ScopeModel;
import org.gcube.portlets.user.workspace.client.model.SmartFolderModel;
import org.gcube.portlets.user.workspace.client.util.ImageRequestType;
import org.gcube.portlets.user.workspace.client.workspace.GWTProperties;
import org.gcube.portlets.user.workspace.client.workspace.GWTWorkspaceFolder;
import org.gcube.portlets.user.workspace.client.workspace.GWTWorkspaceItem;
import org.gcube.portlets.user.workspace.client.workspace.GWTWorkspaceItemAction;
import org.gcube.portlets.user.workspace.client.workspace.folder.item.GWTAquaMapsItem;
import org.gcube.portlets.user.workspace.client.workspace.folder.item.GWTExternalFile;
import org.gcube.portlets.user.workspace.client.workspace.folder.item.GWTExternalImage;
import org.gcube.portlets.user.workspace.client.workspace.folder.item.GWTExternalPDFFile;
import org.gcube.portlets.user.workspace.client.workspace.folder.item.GWTExternalUrl;
import org.gcube.portlets.user.workspace.client.workspace.folder.item.GWTQuery;
import org.gcube.portlets.user.workspace.client.workspace.folder.item.GWTReport;
import org.gcube.portlets.user.workspace.client.workspace.folder.item.GWTReportTemplate;
import org.gcube.portlets.user.workspace.client.workspace.folder.item.GWTTimeSeries;
import org.gcube.portlets.user.workspace.client.workspace.folder.item.GWTWorkflowReport;
import org.gcube.portlets.user.workspace.client.workspace.folder.item.GWTWorkflowTemplate;
import org.gcube.portlets.user.workspace.client.workspace.folder.item.gcube.GWTDocument;
import org.gcube.portlets.user.workspace.client.workspace.folder.item.gcube.GWTDocumentMetadata;
import org.gcube.portlets.user.workspace.client.workspace.folder.item.gcube.GWTImageDocument;
import org.gcube.portlets.user.workspace.client.workspace.folder.item.gcube.GWTMetadata;
import org.gcube.portlets.user.workspace.client.workspace.folder.item.gcube.GWTPDFDocument;
import org.gcube.portlets.user.workspace.client.workspace.folder.item.gcube.GWTUrlDocument;
import org.gcube.portlets.user.workspace.server.util.UserUtil;
import org.gcube.portlets.user.workspace.server.util.WsUtil;
import org.gcube.portlets.user.workspace.shared.accounting.GxtAccountingEntryType;
import org.gcube.portlets.user.workspace.shared.accounting.GxtAccountingField;
import org.gcube.vomanagement.usermanagement.model.UserModel;
/**
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
*
*/
public class GWTWorkspaceBuilder {
protected static final String IMAGE_SERVICE_URL = "ImageService";
protected static Logger logger = Logger.getLogger(GWTWorkspaceBuilder.class);
private InfoContactModel userLogged;
protected static HashMap<String, InfoContactModel> hashTestUser = null;
// private final String UNKNOWN = "unknown";
// private final String FOLDER = "Folder";
/**
* @param logger
*/
public GWTWorkspaceBuilder() {
}
/**
* Used in test mode
* @return
*/
public static HashMap<String, InfoContactModel> getHashTestUsers(){
if(hashTestUser==null){
hashTestUser = new HashMap<String, InfoContactModel>();
hashTestUser.put("federico.defaveri", new InfoContactModel("federico.defaveri", "federico.defaveri", "Federico de Faveri"));
hashTestUser.put("antonio.gioia", new InfoContactModel("antonio.gioia", "antonio.gioia", "Antonio Gioia"));
hashTestUser.put("fabio.sinibaldi", new InfoContactModel("fabio.sinibaldi", "fabio.sinibaldi", "Fabio Sinibaldi"));
hashTestUser.put("pasquale.pagano", new InfoContactModel("pasquale.pagano", "pasquale.pagano", "Pasquale Pagano"));
hashTestUser.put(WsUtil.TEST_USER.toString(), new InfoContactModel(WsUtil.TEST_USER, WsUtil.TEST_USER, WsUtil.TEST_USER_FULL_NAME));
hashTestUser.put("francesco.mangiacrapa", new InfoContactModel("francesco.mangiacrapa", "francesco.mangiacrapa", "Francesco Mangiacrapa"));
hashTestUser.put("massimiliano.assante", new InfoContactModel("massimiliano.assante", "massimiliano.assante", "Massimiliano Assante"));
}
return hashTestUser;
}
protected Date toDate(Calendar calendar)
{
if (calendar == null) return new Date(0);
return calendar.getTime();
}
protected String toDateFormatToString(Calendar calendar){
SimpleDateFormat dateFormat = new SimpleDateFormat("dd-MM, yyyy HH:mm:ss z");
Date resultdate = getDate(calendar);
return dateFormat.format(resultdate);
}
protected Date toDateFormat(Calendar calendar){
SimpleDateFormat dateFormat = new SimpleDateFormat("dd-MM, yyyy HH:mm:ss z");
Date resultdate = getDate(calendar);
try {
resultdate = dateFormat.parse(dateFormat.format(resultdate));
} catch (ParseException e) {
e.printStackTrace();
resultdate = new Date(0);
}
return resultdate;
}
private Date getDate(Calendar calendar) {
Date resultdate = null;
if (calendar == null)
resultdate = new Date(0);
else
resultdate = new Date(calendar.getTimeInMillis());
return resultdate;
}
protected GWTProperties buildGWTProperties(Properties metadata) throws InternalErrorException
{
//FIXME temp solution
//GWTProperties gwtProperties = new GWTProperties(metadata.getId(), metadata.getProperties());
return new GWTProperties();
}
protected String buildImageUrl(String id)
{
return buildImageServiceUrl(id, ImageRequestType.IMAGE);
}
protected String buildThumbnailUrl(String id)
{
return buildImageServiceUrl(id, ImageRequestType.THUMBNAIL);
}
protected String buildImageServiceUrl(String id, ImageRequestType requestType){
StringBuilder sb = new StringBuilder();
sb.append(IMAGE_SERVICE_URL);
sb.append("?id=");
sb.append(id);
sb.append("&type=");
sb.append(requestType.toString());
return sb.toString();
}
protected GWTExternalFile buildGWTExternalFile(ExternalFile file, GWTWorkspaceFolder parent) throws InternalErrorException
{
GWTProperties gwtProperties = buildGWTProperties(file.getProperties());
GWTExternalFile gwtFile = new GWTExternalFile(
toDate(file.getCreationTime()),
file.getId(),
gwtProperties,
file.getName(),
file.getOwner().getPortalLogin(),
file.getDescription(),
toDate(file.getLastModificationTime()),
GWTWorkspaceItemAction.valueOf(file.getLastAction().toString()),
parent,
file.getLength(),
file.getMimeType());
return gwtFile;
}
protected GWTExternalPDFFile buildGWTExternalPDFFile(ExternalPDFFile pdfFile, GWTWorkspaceFolder parent) throws InternalErrorException
{
GWTProperties gwtProperties = buildGWTProperties(pdfFile.getProperties());
GWTExternalPDFFile gwtPDFFile = new GWTExternalPDFFile(
toDate(pdfFile.getCreationTime()),
pdfFile.getId(),
gwtProperties,
pdfFile.getName(),
pdfFile.getOwner().getPortalLogin(),
pdfFile.getDescription(),
toDate(pdfFile.getLastModificationTime()),
GWTWorkspaceItemAction.valueOf(pdfFile.getLastAction().toString()),
parent,
pdfFile.getLength(),
pdfFile.getMimeType(),
pdfFile.getAuthor(),
pdfFile.getNumberOfPages(),
pdfFile.getProducer(),
pdfFile.getTitle(),
pdfFile.getVersion());
return gwtPDFFile;
}
protected GWTExternalImage buildGWTExternalImage(ExternalImage image, GWTWorkspaceFolder parent) throws InternalErrorException
{
GWTProperties gwtProperties = buildGWTProperties(image.getProperties());
GWTExternalImage gwtImage = new GWTExternalImage(
toDate(image.getCreationTime()),
image.getId(),
gwtProperties,
image.getName(),
image.getOwner().getPortalLogin(),
image.getDescription(),
toDate(image.getLastModificationTime()),
GWTWorkspaceItemAction.valueOf(image.getLastAction().toString()),
parent,
buildImageUrl(image.getId()),
buildThumbnailUrl(image.getId()),
image.getWidth(),
image.getHeight(),
image.getLength(),
image.getThumbnailWidth(),
image.getThumbnailHeight(),
image.getThumbnailLength(),
image.getMimeType());
return gwtImage;
}
protected GWTQuery buildGWTQuery(Query query, GWTWorkspaceFolder parent) throws InternalErrorException
{
GWTProperties gwtProperties = buildGWTProperties(query.getProperties());
GWTQuery gwtQuery = new GWTQuery(
query.getId(),
query.getName(),
query.getDescription(),
query.getOwner().getPortalLogin(),
toDate(query.getCreationTime()),
gwtProperties,
toDate(query.getLastModificationTime()),
GWTWorkspaceItemAction.valueOf(query.getLastAction().toString()),
parent,
query.getLength());
return gwtQuery;
}
protected GWTAquaMapsItem buildGWTAquaMapsItem(AquaMapsItem aquamapsItem, GWTWorkspaceFolder parent) throws InternalErrorException
{
GWTProperties gwtProperties = buildGWTProperties(aquamapsItem.getProperties());
GWTAquaMapsItem gwtAquaMapsItem = new GWTAquaMapsItem(
aquamapsItem.getId(),
aquamapsItem.getName(),
aquamapsItem.getDescription(),
aquamapsItem.getOwner().getPortalLogin(),
toDate(aquamapsItem.getCreationTime()),
gwtProperties,
toDate(aquamapsItem.getLastModificationTime()),
GWTWorkspaceItemAction.valueOf(aquamapsItem.getLastAction().toString()),
parent,
aquamapsItem.getLength(),
aquamapsItem.getMapName(),
aquamapsItem.getMapType(),
aquamapsItem.getAuthor(),
aquamapsItem.getNumberOfSpecies(),
aquamapsItem.getBoundingBox(),
aquamapsItem.getPsoThreshold(),
aquamapsItem.getNumberOfGeneratedImages()
);
return gwtAquaMapsItem;
}
protected GWTTimeSeries buildGWTTimeSeries(TimeSeries timeseries, GWTWorkspaceFolder parent) throws InternalErrorException
{
GWTProperties gwtProperties = buildGWTProperties(timeseries.getProperties());
TimeSeriesInfo timeSeriesInfo = timeseries.getTimeSeriesInfo();
GWTTimeSeries gwtTimeSeries = new GWTTimeSeries(
timeseries.getId(),
timeseries.getName(),
timeseries.getDescription(),
timeseries.getOwner().getPortalLogin(),
toDate(timeseries.getCreationTime()),
gwtProperties,
toDate(timeseries.getLastModificationTime()),
GWTWorkspaceItemAction.valueOf(timeseries.getLastAction().toString()),
parent,
timeseries.getLength(),
timeSeriesInfo.getId(),
timeSeriesInfo.getTitle(),
timeSeriesInfo.getCreator(),
timeSeriesInfo.getDescription(),
timeSeriesInfo.getCreationDate(),
timeSeriesInfo.getPublisher(),
timeSeriesInfo.getSourceId(),
timeSeriesInfo.getSourceName(),
timeSeriesInfo.getRights(),
timeSeriesInfo.getDimension(),
new LinkedList<String>(timeseries.getHeaderLabels())
);
return gwtTimeSeries;
}
protected GWTReportTemplate buildGWTReportTemplate(ReportTemplate template, GWTWorkspaceFolder parent) throws InternalErrorException
{
GWTProperties gwtProperties = buildGWTProperties(template.getProperties());
GWTReportTemplate gwtTemplate = new GWTReportTemplate(
template.getId(),
template.getName(),
template.getDescription(),
template.getOwner().getPortalLogin(),
toDate(template.getCreationTime()),
gwtProperties,
toDate(template.getLastModificationTime()),
GWTWorkspaceItemAction.valueOf(template.getLastAction().toString()),
parent,
template.getLength(),
toDate(template.getCreated()),
toDate(template.getLastEdit()),
template.getAuthor(),
template.getLastEditBy(),
template.getNumberOfSections(),
template.getStatus());
return gwtTemplate;
}
protected GWTReport buildGWTReport(Report template, GWTWorkspaceFolder parent) throws InternalErrorException
{
GWTProperties gwtProperties = buildGWTProperties(template.getProperties());
GWTReport gwtReport = new GWTReport(
template.getId(),
template.getName(),
template.getDescription(),
template.getOwner().getPortalLogin(),
toDate(template.getCreationTime()),
gwtProperties,
toDate(template.getLastModificationTime()),
GWTWorkspaceItemAction.valueOf(template.getLastAction().toString()),
parent,
template.getLength(),
toDate(template.getCreated()),
toDate(template.getLastEdit()),
template.getAuthor(),
template.getLastEditBy(),
template.getTemplateName(),
template.getNumberOfSections(),
template.getStatus()
);
return gwtReport;
}
protected GWTWorkflowReport buildGWTWorkflowReport(WorkflowReport workflowReport, GWTWorkspaceFolder parent) throws InternalErrorException
{
GWTProperties gwtProperties = buildGWTProperties(workflowReport.getProperties());
GWTWorkflowReport gwtWorkflowReport = new GWTWorkflowReport(
workflowReport.getId(),
workflowReport.getName(),
workflowReport.getDescription(),
workflowReport.getOwner().getPortalLogin(),
toDate(workflowReport.getCreationTime()),
gwtProperties,
toDate(workflowReport.getLastModificationTime()),
GWTWorkspaceItemAction.valueOf(workflowReport.getLastAction().toString()),
parent,
workflowReport.getLength()
);
gwtWorkflowReport.setWorkflowStatus(workflowReport.getWorkflowStatus());
return gwtWorkflowReport;
}
protected GWTWorkflowTemplate buildGWTWorkflowTemplate(WorkflowTemplate workflowTemplate, GWTWorkspaceFolder parent) throws InternalErrorException
{
GWTProperties gwtProperties = buildGWTProperties(workflowTemplate.getProperties());
GWTWorkflowTemplate gwtWorkflowReport = new GWTWorkflowTemplate(
workflowTemplate.getId(),
workflowTemplate.getName(),
workflowTemplate.getDescription(),
workflowTemplate.getOwner().getPortalLogin(),
toDate(workflowTemplate.getCreationTime()),
gwtProperties,
toDate(workflowTemplate.getLastModificationTime()),
GWTWorkspaceItemAction.valueOf(workflowTemplate.getLastAction().toString()),
parent,
workflowTemplate.getLength()
);
gwtWorkflowReport.setWorkflowStatus(workflowTemplate.getWorkflowStatus());
return gwtWorkflowReport;
}
protected GWTImageDocument buildGWTImageDocument(ImageDocument image, GWTWorkspaceFolder parent) throws InternalErrorException
{
GWTProperties gwtProperties = buildGWTProperties(image.getProperties());
Map<String, GWTDocumentMetadata> gwtmetadatas = getMetadatas(image.getMetadata(), image.getId());
GWTImageDocument gwtImage = new GWTImageDocument(
toDate(image.getCreationTime()),
image.getId(),
gwtProperties,
image.getName(),
image.getOwner().getPortalLogin(),
image.getDescription(),
toDate(image.getLastModificationTime()),
GWTWorkspaceItemAction.valueOf(image.getLastAction().toString()),
parent,
buildImageUrl(image.getId()),
buildThumbnailUrl(image.getId()),
image.getWidth(),
image.getHeight(),
image.getThumbnailWidth(),
image.getThumbnailHeight(),
image.getThumbnailLength(),
image.getLength(),
image.getMimeType(),
image.getURI(),
gwtmetadatas,
new LinkedHashMap<String, String>(),
image.getCollectionName(),
image.getAlternatives().size(),
image.getParts().size()
);
return gwtImage;
}
protected GWTPDFDocument buildGWTPDFDocument(PDFDocument pdfDocument, GWTWorkspaceFolder parent) throws InternalErrorException
{
GWTProperties gwtProperties = buildGWTProperties(pdfDocument.getProperties());
Map<String, GWTDocumentMetadata> gwtmetadatas = getMetadatas(pdfDocument.getMetadata(), pdfDocument.getId());
GWTPDFDocument gwtPDF = new GWTPDFDocument(
toDate(pdfDocument.getCreationTime()),
pdfDocument.getId(),
gwtProperties,
pdfDocument.getName(),
pdfDocument.getOwner().getPortalLogin(),
pdfDocument.getDescription(),
toDate(pdfDocument.getLastModificationTime()),
GWTWorkspaceItemAction.valueOf(pdfDocument.getLastAction().toString()),
parent,
pdfDocument.getLength(),
pdfDocument.getURI(),
pdfDocument.getMimeType(),
gwtmetadatas,
new LinkedHashMap<String, String>(),
pdfDocument.getCollectionName(),
pdfDocument.getAlternatives().size(),
pdfDocument.getParts().size(),
pdfDocument.getAuthor(),
pdfDocument.getNumberOfPages(),
pdfDocument.getProducer(),
pdfDocument.getTitle(),
pdfDocument.getVersion(),
"DocumentService?id="+pdfDocument.getId()
);
return gwtPDF;
}
protected GWTDocument buildGWTDocument(Document document, GWTWorkspaceFolder parent) throws InternalErrorException
{
GWTProperties gwtProperties = buildGWTProperties(document.getProperties());
Map<String, GWTDocumentMetadata> gwtmetadatas = getMetadatas(document.getMetadata(), document.getId());
GWTDocument gwtPDF = new GWTDocument(
toDate(document.getCreationTime()),
document.getId(),
gwtProperties,
document.getName(),
document.getOwner().getPortalLogin(),
document.getDescription(),
toDate(document.getLastModificationTime()),
GWTWorkspaceItemAction.valueOf(document.getLastAction().toString()),
parent,
document.getLength(),
document.getURI(),
document.getMimeType(),
gwtmetadatas,
new LinkedHashMap<String, String>(),
document.getCollectionName(),
document.getAlternatives().size(),
document.getParts().size()
);
return gwtPDF;
}
protected GWTMetadata buildGWTMetadata(Metadata metadata, GWTWorkspaceFolder parent) throws InternalErrorException
{
GWTProperties gwtProperties = buildGWTProperties(metadata.getProperties());
GWTMetadata gwtMetadata = new GWTMetadata(
metadata.getId(),
metadata.getName(),
metadata.getDescription(),
metadata.getOwner().getPortalLogin(),
toDate(metadata.getCreationTime()),
gwtProperties,
toDate(metadata.getLastModificationTime()),
GWTWorkspaceItemAction.valueOf(metadata.getLastAction().toString()),
parent,
metadata.getLength(),
metadata.getURI(),
metadata.getSchema(),
metadata.getLanguage(),
metadata.getCollectionName(),
"MetadataService?id="+metadata.getId()+"&type="+MetadataFormat.HTML,
"MetadataService?id="+metadata.getId()+"&type="+MetadataFormat.RAW_XML_AS_HTML
);
return gwtMetadata;
}
///////////////////////*********************USED
//ADD FRANCESCO
protected GWTWorkspaceItem buildGWTWorkspaceImage(WorkspaceItem item, boolean isInteralImage, boolean fullDetails) throws InternalErrorException
{
GWTWorkspaceItem gwtImage;
GWTProperties gwtProperties = buildGWTProperties(item.getProperties());
//
if(isInteralImage){
ImageDocument image = (ImageDocument) item; //Cast Image Document
Map<String, GWTDocumentMetadata> gwtmetadatas = getMetadatas(image.getMetadata(), image.getId());
gwtImage = (GWTImageDocument) new GWTImageDocument(
toDate(image.getCreationTime()),
image.getId(),
gwtProperties,
image.getName(),
image.getOwner().getPortalLogin(),
image.getDescription(),
toDate(image.getLastModificationTime()),
GWTWorkspaceItemAction.valueOf(image.getLastAction().toString()),
null,
buildImageUrl(image.getId()),
buildThumbnailUrl(image.getId()),
image.getWidth(),
image.getHeight(),
image.getThumbnailWidth(),
image.getThumbnailHeight(),
image.getThumbnailLength(),
image.getLength(),
image.getMimeType(),
image.getURI(),
gwtmetadatas,
new LinkedHashMap<String, String>(),
image.getCollectionName(),
image.getAlternatives().size(),
image.getParts().size());
}
else{
ExternalImage image = (ExternalImage) item; //Cast External Document
if(fullDetails){
gwtImage = new GWTExternalImage(
toDate(image.getCreationTime()),
image.getId(),
gwtProperties,
image.getName(),
image.getOwner().getPortalLogin(),
image.getDescription(),
toDate(image.getLastModificationTime()),
GWTWorkspaceItemAction.valueOf(image.getLastAction().toString()),
null, //parent
buildImageUrl(image.getId()),
buildThumbnailUrl(image.getId()),
image.getWidth(),
image.getHeight(),
image.getLength(),
image.getThumbnailWidth(),
image.getThumbnailHeight(),
image.getThumbnailLength(),
image.getMimeType());
}
else{
gwtImage = new GWTExternalImage(
buildImageUrl(image.getId()),
buildThumbnailUrl(image.getId()),
image.getWidth(),
image.getHeight(),
image.getLength(),
image.getThumbnailWidth(),
image.getThumbnailHeight(),
image.getThumbnailLength(),
image.getMimeType());
}
}
return gwtImage;
}
protected GWTExternalUrl buildGWTExternalUrl(ExternalUrl url, GWTWorkspaceFolder parent) throws InternalErrorException
{
GWTProperties gwtProperties = buildGWTProperties(url.getProperties());
GWTExternalUrl gwtUrl = new GWTExternalUrl(
toDate(url.getCreationTime()),
url.getId(),
gwtProperties,
url.getName(),
url.getOwner().getPortalLogin(),
url.getDescription(),
toDate(url.getLastModificationTime()),
GWTWorkspaceItemAction.valueOf(url.getLastAction().toString()),
parent,
url.getLength(),
url.getUrl());
return gwtUrl;
}
protected GWTWorkspaceItem buildGWTWorspaceUrl(WorkspaceItem item, boolean isInternalUrl, boolean fullDetails) throws InternalErrorException
{
GWTWorkspaceItem gwtUrl = null;
GWTProperties gwtProperties = buildGWTProperties(item.getProperties());
// GWTUrlDocument gwtUrlDocument = null;
if(isInternalUrl){
UrlDocument document = (UrlDocument) item; //Cast
Map<String, GWTDocumentMetadata> gwtmetadatas = getMetadatas(document.getMetadata(), document.getId());
gwtUrl = new GWTUrlDocument(
toDate(document.getCreationTime()),
document.getId(),
gwtProperties,
document.getName(),
document.getOwner().getPortalLogin(),
document.getDescription(),
toDate(document.getLastModificationTime()),
GWTWorkspaceItemAction.valueOf(document.getLastAction().toString()),
null,
document.getLength(),
document.getURI(),
document.getMimeType(),
gwtmetadatas,
new LinkedHashMap<String, String>(),
document.getCollectionName(),
document.getAlternatives().size(),
document.getParts().size(),
document.getUrl());
}
else{
ExternalUrl document = (ExternalUrl) item; //Cast
if(fullDetails){
gwtUrl = new GWTExternalUrl(
toDate(document.getCreationTime()),
document.getId(),
gwtProperties,
document.getName(),
document.getOwner().getPortalLogin(),
document.getDescription(),
toDate(document.getLastModificationTime()),
GWTWorkspaceItemAction.valueOf(document.getLastAction().toString()),
null,
document.getLength(),
document.getUrl());
}
else{
gwtUrl = new GWTExternalUrl(document.getUrl());
}
}
return gwtUrl;
}
protected Map<String, GWTDocumentMetadata> getMetadatas(Map<String, DocumentMetadata> metadatas, String documentId)
{
Map<String, GWTDocumentMetadata> gwtmetadatas = new LinkedHashMap<String, GWTDocumentMetadata>();
for (Entry<String, DocumentMetadata> metadata : metadatas.entrySet()) gwtmetadatas.put(metadata.getKey(), getMetadata(metadata.getValue(), documentId));
return gwtmetadatas;
}
protected GWTDocumentMetadata getMetadata(DocumentMetadata metadata, String documentId)
{
return new GWTDocumentMetadata(metadata.getSchemaName(),
"MetadataService?id="+documentId+"&schema="+metadata.getSchemaName()+"&type="+MetadataFormat.HTML,
"MetadataService?id="+documentId+"&schema="+metadata.getSchemaName()+"&type="+MetadataFormat.RAW_XML_AS_HTML,
"MetadataService?id="+documentId+"&schema="+metadata.getSchemaName()+"&type="+MetadataFormat.FORMATTED_XML);
}
//*****************************************************NEW
public FolderModel buildWorkspaceFileModelRoot(WorkspaceFolder workspaceRoot) throws InternalErrorException {
logger.trace("workspace id: "+ workspaceRoot.getId());
logger.trace("workspace name: "+ workspaceRoot.getName());
logger.trace("workspace path "+ workspaceRoot.getPath());
FolderModel root = new FolderModel(workspaceRoot.getId(),workspaceRoot.getName(),null, true, workspaceRoot.isShared());
root.setIsRoot(true);
// root.setShareable(true);
// root.setOwner(new InfoContactModel(workspaceRoot.getOwner().getId(), workspaceRoot.getOwner().getPortalLogin(), "name"));
// root.setShared(workspaceRoot.isShared());
// root.setMarkAsRead(workspaceRoot.isMarkedAsRead());
return root;
}
protected List<FileModel> buildGXTListFileModelItem(WorkspaceItem workspaceFolder, FileModel parentFolderModel) throws InternalErrorException
{
List<FileModel> listFileModel = new ArrayList<FileModel>();
List<WorkspaceItem> listItems = (List<WorkspaceItem>) workspaceFolder.getChildren();
if(listItems!=null)
logger.trace("HL return "+listItems.size()+ "items, converting...");
//TEST TIME
// Long startTime = System.currentTimeMillis();
// Long endTime = System.currentTimeMillis() - startTime;
// String time = String.format("%d msc %d sec", endTime, TimeUnit.MILLISECONDS.toSeconds(endTime));
// logger.trace("tree getChildren() returning "+listItems.size()+" elements in " + time);
// startTime = System.currentTimeMillis();
for (WorkspaceItem item : listItems){
listFileModel.add(buildGXTFileModelItem(item,parentFolderModel));
}
//TEST TIME
// endTime = System.currentTimeMillis() - startTime;
// time = String.format("%d msc %d sec", endTime, TimeUnit.MILLISECONDS.toSeconds(endTime));
// logger.trace("tree gxt objects getChildren() returning "+listItems.size()+" elements in " + time);
return listFileModel;
// return buildGXTListFileModelItem((WorkspaceItem) workspaceFolder.getChildren(), parentFolderModel);
}
protected List<FileModel> buildGXTListFileModelItemForAttachs(List<WorkspaceItem> listWorspaceItems) throws InternalErrorException
{
List<FileModel> listFileModel = new ArrayList<FileModel>();
for (WorkspaceItem item : listWorspaceItems){
FileModel fileModel = null;
switch (item.getType()) {
case FOLDER: fileModel = new FolderModel(item.getId(), item.getName(), true);
fileModel.setType(GXTFolderItemTypeEnum.FOLDER.toString());
break;
case FOLDER_ITEM:
fileModel = new FileModel(item.getId(), item.getName(), false);
FolderItem folderItem = (FolderItem) item;
fileModel = setFolderItemType(fileModel, folderItem);
break;
case SHARED_FOLDER:
fileModel = new FolderModel(item.getId(), item.getName(), true);
fileModel.setShared(true);
fileModel.setType(GXTFolderItemTypeEnum.SHARED_FOLDER.toString());
// WorkspaceSharedFolder sharedFolder = (WorkspaceSharedFolder) item;
// fileModel.setListShareUser(buildGxtInfoContactFromPortalLogin(sharedFolder.getUsers()));
break;
default:
logger.error("gxt conversion return null for item "+item.getName());
break;
}
listFileModel.add(fileModel);
}
return listFileModel;
}
/**
*
* @param listPortalLogin
* @return
*/
public List<InfoContactModel> buildGxtInfoContactsFromPortalLogins(List<String> listPortalLogin){
List<InfoContactModel> listContact = new ArrayList<InfoContactModel>();
for (String portalLogin : listPortalLogin)
listContact.add(buildGxtInfoContactFromPortalLogin(portalLogin));
return listContact;
}
/**
*
* @param portalLogin
* @return
*/
protected InfoContactModel buildGxtInfoContactFromPortalLogin(String portalLogin){
if(portalLogin==null){
logger.warn("portal login is null, return empty");
portalLogin = "";
}
return new InfoContactModel(portalLogin, portalLogin, UserUtil.getUserFullName(portalLogin));
}
/**
* Used in test mode
* @param listPortalLogin
* @return
*/
protected List<InfoContactModel> buildGxtInfoContactFromPortalLoginTestMode(List<String> listPortalLogin){
List<InfoContactModel> listContact = new ArrayList<InfoContactModel>();
for (String portalLogin : listPortalLogin)
listContact.add(getHashTestUsers().get(portalLogin));
return listContact;
}
protected FileModel buildGXTFileModelItem(WorkspaceItem item, FileModel parentFolderModel) throws InternalErrorException
{
FileModel fileModel = null;
switch (item.getType()) {
case FOLDER:
fileModel = new FolderModel(item.getId(), item.getName(), (FolderModel) parentFolderModel, true, false);
fileModel.setType(GXTFolderItemTypeEnum.FOLDER.toString());
fileModel.setShareable(true);
fileModel.setDescription(item.getDescription());
break;
case FOLDER_ITEM:
// fileModel = new FileModel(item.getId(), item.getName(), item.getPath(), (FolderModel) parentFolderModel, false);
fileModel = new FileModel(item.getId(), item.getName(), (FolderModel) parentFolderModel, false, false);
FolderItem folderItem = (FolderItem) item;
fileModel = setFolderItemType(fileModel, folderItem);
fileModel.setShareable(true);
break;
case SHARED_FOLDER:
fileModel = new FolderModel(item.getId(), item.getName(), (FolderModel) parentFolderModel, true, true);
fileModel.setType(GXTFolderItemTypeEnum.SHARED_FOLDER.toString());
fileModel.setShareable(true);
fileModel.setDescription(item.getDescription());
// WorkspaceSharedFolder sharedFolder = (WorkspaceSharedFolder) item;
// fileModel.setListShareUser(buildGxtInfoContactFromPortalLogin(sharedFolder.getUsers()));
break;
default:
logger.error("gxt conversion return null for item "+item.getName());
break;
}
//ACCOUNTING
fileModel.setMarkAsRead(item.isMarkedAsRead());
if(parentFolderModel!=null && parentFolderModel.isShared()){
fileModel.setShared(true);
fileModel.setShareable(false);
}
// fileModel.setOwner(new InfoContactModel(item.getOwner().getId(), item.getOwner().getPortalLogin(), "name"));
//// fileModel.setShared(item.isShared());
// fileModel.setMarkAsRead(item.isMarkedAsRead());
return fileModel;
}
protected List<FileGridModel> buildGXTListFileGridModelItemForSearch(List<SearchItem> listSearchItems, FileModel parentFileModel) throws InternalErrorException
{
List<FileGridModel> listFileGridModel = new ArrayList<FileGridModel>();
for (SearchItem item : listSearchItems)
listFileGridModel.add(buildGXTFileGridModelItemForSearch(item,parentFileModel));
return listFileGridModel;
}
private FileGridModel buildGXTFileGridModelItemForSearch(SearchItem item, FileModel parentFileModel) throws InternalErrorException{
FileGridModel fileGridModel = null;
switch (item.getType()) {
case FOLDER:
fileGridModel = (FolderGridModel) new FolderGridModel(item.getId(), item.getName(), toDate(item.getCreationDate()), parentFileModel, -1, true, false);
fileGridModel.setType(GXTFolderItemTypeEnum.FOLDER.toString());
fileGridModel.setShortcutCategory(GXTCategoryItemInterface.SMF_DOCUMENTS);
fileGridModel.setShareable(true);
break;
case FOLDER_ITEM:
SearchFolderItem folderItem = (SearchFolderItem) item;
fileGridModel = new FileGridModel(item.getId(), item.getName(), toDate(item.getCreationDate()), parentFileModel, folderItem.getSize(), false, false);
// FolderItem folderItem = (FolderItem) item;
fileGridModel = (FileGridModel) setFolderItemTypeForSearch(fileGridModel, folderItem);
break;
case SHARED_FOLDER:
fileGridModel = (FolderGridModel) new FolderGridModel(item.getId(), item.getName(), toDate(item.getCreationDate()), parentFileModel, -1, true, false);
fileGridModel.setType(GXTFolderItemTypeEnum.SHARED_FOLDER.toString());
fileGridModel.setShortcutCategory(GXTCategoryItemInterface.SMF_DOCUMENTS);
fileGridModel.setShareable(true);
// fileGridModel.setDescription(item.getDescription()); // GET DESCRIPTION IN SEARCH //TODO
// WorkspaceSharedFolder sharedFolder = (WorkspaceSharedFolder) item;
// fileGridModel.setListShareUser(buildGxtInfoContactFromPortalLogin(sharedFolder.getUsers()));
break;
default:
logger.error("gxt conversion return null for item "+item.getName());
break;
}
//TODO SETTING OWNER, ISSHARED IN SEARCH ITEM
//ACCOUNTING
// fileGridModel.setMarkAsRead(item.isMarkedAsRead());
return fileGridModel;
}
protected List<FileGridModel> buildGXTListFileGridModelItem(List<WorkspaceItem> listWorkspaceItems, FileModel parentFileModel) throws InternalErrorException
{
Long startTime = System.currentTimeMillis();
List<FileGridModel> listFileGridModel = new ArrayList<FileGridModel>();
for (WorkspaceItem item : listWorkspaceItems)
listFileGridModel.add(buildGXTFileGridModelItem(item,parentFileModel));
Long endTime = System.currentTimeMillis() - startTime;
String time = String.format("%d msc %d sec", endTime, TimeUnit.MILLISECONDS.toSeconds(endTime));
logger.trace("##GRID FILLING: gxt grid objects getChildren() returning "+listWorkspaceItems.size()+" elements in " + time);
return listFileGridModel;
}
protected FileGridModel buildGXTFileGridModelItem(WorkspaceItem item, FileModel parentFileModel) throws InternalErrorException{
FileGridModel fileGridModel = null;
switch (item.getType()) {
case FOLDER:
fileGridModel = (FolderGridModel) new FolderGridModel(item.getId(), item.getName(), toDate(item.getCreationTime()), parentFileModel, -1, true, false);
fileGridModel.setType(GXTFolderItemTypeEnum.FOLDER.toString());
fileGridModel.setShortcutCategory(GXTCategoryItemInterface.SMF_DOCUMENTS);
fileGridModel.setShareable(true);
fileGridModel.setDescription(item.getDescription());
break;
case FOLDER_ITEM:
FolderItem folderItem = (FolderItem) item;
fileGridModel = new FileGridModel(item.getId(), item.getName(), toDate(item.getCreationTime()), parentFileModel, folderItem.getLength(), false, false);
fileGridModel = (FileGridModel) setFolderItemType(fileGridModel, folderItem);
break;
case SHARED_FOLDER:
fileGridModel = (FolderGridModel) new FolderGridModel(item.getId(), item.getName(), toDate(item.getCreationTime()), parentFileModel, -1, true, true);
fileGridModel.setType(GXTFolderItemTypeEnum.SHARED_FOLDER.toString());
fileGridModel.setShortcutCategory(GXTCategoryItemInterface.SMF_DOCUMENTS);
fileGridModel.setShareable(true);
fileGridModel.setDescription(item.getDescription());
break;
default:
logger.error("gxt conversion return null for item "+item.getName());
break;
}
//ACCOUNTING
fileGridModel.setMarkAsRead(item.isMarkedAsRead());
if(parentFileModel!=null && parentFileModel.isShared()){
fileGridModel.setShared(true);
fileGridModel.setShareable(false);
}
//OWNER
if(fileGridModel.isShared()){ //IS READ FROM HL ONLY IF THE ITEM IS SHARED
User owner = item.getOwner();
if(owner!=null){
// System.out.println("++++reading owner");
String portalLogin = owner.getPortalLogin();
String fullName = portalLogin;
if(!WsUtil.withoutPortal) //INTO PORTAL
fullName = UserUtil.getUserFullName(portalLogin);
// fileGridModel.setOwner(new InfoContactModel(item.getOwner().getId(), portalLogin, fullName));
fileGridModel.setOwnerFullName(fullName);
}
}
else{
if(userLogged!=null)
// fileGridModel.setOwner(new InfoContactModel(userLogged.getId(), userLogged.getLogin(), userLogged.getName()));
fileGridModel.setOwnerFullName(userLogged.getName());
}
//// fileGridModel.setShared(item.isShared());
// fileGridModel.setMarkAsRead(item.isMarkedAsRead());
return fileGridModel;
}
protected FileModel setFolderItemTypeForSearch(FileModel fileModel, SearchFolderItem searchFolderItem){
if(searchFolderItem.getFolderItemType()==null){
logger.trace("Search folder item type is null for "+searchFolderItem.getId() + " name: "+searchFolderItem.getName());
//FOR DEBUG
// System.out.println("Search folder item type is null for "+searchFolderItem.getId() + " name: "+searchFolderItem.getName());
return fileModel;
}
switch(searchFolderItem.getFolderItemType())
{
case EXTERNAL_IMAGE:
fileModel.setFolderItemType(GXTFolderItemTypeEnum.EXTERNAL_IMAGE);
fileModel.setShortcutCategory(GXTCategoryItemInterface.SMF_IMAGES);
fileModel.setType(searchFolderItem.getMimeType());
break;
case EXTERNAL_FILE:
fileModel.setFolderItemType(GXTFolderItemTypeEnum.EXTERNAL_FILE);
fileModel.setShortcutCategory(GXTCategoryItemInterface.SMF_DOCUMENTS);
fileModel.setType(searchFolderItem.getMimeType());
break;
case EXTERNAL_PDF_FILE:
fileModel.setFolderItemType(GXTFolderItemTypeEnum.EXTERNAL_PDF_FILE);
fileModel.setShortcutCategory(GXTCategoryItemInterface.SMF_DOCUMENTS);
fileModel.setType(searchFolderItem.getMimeType());
break;
case EXTERNAL_URL:
fileModel.setFolderItemType(GXTFolderItemTypeEnum.EXTERNAL_URL);
fileModel.setShortcutCategory(GXTCategoryItemInterface.SMF_LINKS);
break;
case REPORT_TEMPLATE:
fileModel.setFolderItemType(GXTFolderItemTypeEnum.REPORT_TEMPLATE);
fileModel.setShortcutCategory(GXTCategoryItemInterface.SMF_REPORTS);
break;
case REPORT:
fileModel.setFolderItemType(GXTFolderItemTypeEnum.REPORT);
fileModel.setShortcutCategory(GXTCategoryItemInterface.SMF_REPORTS);
break;
case QUERY:
fileModel.setFolderItemType(GXTFolderItemTypeEnum.QUERY);
fileModel.setShortcutCategory(GXTCategoryItemInterface.SMF_DOCUMENTS);
break;
case TIME_SERIES:
fileModel.setFolderItemType(GXTFolderItemTypeEnum.TIME_SERIES);
fileModel.setShortcutCategory(GXTCategoryItemInterface.SMF_TIMESERIES);
break;
// case AQUAMAPS_ITEM:
// fileModel.setFolderItemType(GXTFolderItemTypeEnum.AQUAMAPS_ITEM);
// fileModel.setShortcutCategory(GXTCategoryItemInterface.BIODIVERSITY);
// break;
case PDF_DOCUMENT:
fileModel.setFolderItemType(GXTFolderItemTypeEnum.PDF_DOCUMENT);
fileModel.setShortcutCategory(GXTCategoryItemInterface.SMF_DOCUMENTS);
break;
case IMAGE_DOCUMENT:
fileModel.setFolderItemType(GXTFolderItemTypeEnum.IMAGE_DOCUMENT);
fileModel.setShortcutCategory(GXTCategoryItemInterface.SMF_IMAGES);
fileModel.setType(searchFolderItem.getMimeType());
break;
case DOCUMENT:
fileModel.setFolderItemType(GXTFolderItemTypeEnum.DOCUMENT);
fileModel.setShortcutCategory(GXTCategoryItemInterface.SMF_DOCUMENTS);
fileModel.setType(searchFolderItem.getMimeType());
break;
case URL_DOCUMENT:
fileModel.setFolderItemType(GXTFolderItemTypeEnum.URL_DOCUMENT);
fileModel.setShortcutCategory(GXTCategoryItemInterface.SMF_DOCUMENTS);
break;
case METADATA:
fileModel.setFolderItemType(GXTFolderItemTypeEnum.METADATA);
fileModel.setShortcutCategory(GXTCategoryItemInterface.SMF_DOCUMENTS);
break;
case WORKFLOW_REPORT:
fileModel.setFolderItemType(GXTFolderItemTypeEnum.WORKFLOW_REPORT);
fileModel.setShortcutCategory(GXTCategoryItemInterface.SMF_DOCUMENTS);
break;
case WORKFLOW_TEMPLATE:
fileModel.setFolderItemType(GXTFolderItemTypeEnum.WORKFLOW_TEMPLATE);
fileModel.setShortcutCategory(GXTCategoryItemInterface.SMF_DOCUMENTS);
// logger.trace("**************************************DOCUMENTS******* filemodel "+ fileModel.getName());
break;
case EXTERNAL_RESOURCE_LINK:
fileModel.setFolderItemType(GXTFolderItemTypeEnum.EXTERNAL_RESOURCE_LINK);
fileModel.setShortcutCategory(GXTCategoryItemInterface.SMF_LINKS);
break;
default:
fileModel.setFolderItemType(GXTFolderItemTypeEnum.UNKNOWN_TYPE);
fileModel.setShortcutCategory(GXTCategoryItemInterface.SMF_UNKNOWN);
fileModel.setType(GXTFolderItemTypeEnum.UNKNOWN_TYPE.toString());
// logger.trace("**************************************UNKNOWN******* filemodel "+ fileModel.getName());
break;
}
return fileModel;
}
protected FileModel setFolderItemType(FileModel fileModel, FolderItem worspaceFolderItem){
switch(worspaceFolderItem.getFolderItemType())
{
case EXTERNAL_IMAGE:
fileModel.setFolderItemType(GXTFolderItemTypeEnum.EXTERNAL_IMAGE);
fileModel.setShortcutCategory(GXTCategoryItemInterface.SMF_IMAGES);
ExternalImage extImage = (ExternalImage) worspaceFolderItem;
fileModel.setType(extImage.getMimeType());
break;
case EXTERNAL_FILE:
fileModel.setFolderItemType(GXTFolderItemTypeEnum.EXTERNAL_FILE);
fileModel.setShortcutCategory(GXTCategoryItemInterface.SMF_DOCUMENTS);
ExternalFile extFile = (ExternalFile) worspaceFolderItem;
fileModel.setType(extFile.getMimeType());
break;
case EXTERNAL_PDF_FILE:
fileModel.setFolderItemType(GXTFolderItemTypeEnum.EXTERNAL_PDF_FILE);
fileModel.setShortcutCategory(GXTCategoryItemInterface.SMF_DOCUMENTS);
ExternalPDFFile pdfExt = (ExternalPDFFile) worspaceFolderItem;
fileModel.setType(pdfExt.getMimeType());
break;
case EXTERNAL_URL:
fileModel.setFolderItemType(GXTFolderItemTypeEnum.EXTERNAL_URL);
fileModel.setShortcutCategory(GXTCategoryItemInterface.SMF_LINKS);
break;
case REPORT_TEMPLATE:
fileModel.setFolderItemType(GXTFolderItemTypeEnum.REPORT_TEMPLATE);
fileModel.setShortcutCategory(GXTCategoryItemInterface.SMF_REPORTS);
break;
case REPORT:
fileModel.setFolderItemType(GXTFolderItemTypeEnum.REPORT);
fileModel.setShortcutCategory(GXTCategoryItemInterface.SMF_REPORTS);
break;
case QUERY:
fileModel.setFolderItemType(GXTFolderItemTypeEnum.QUERY);
fileModel.setShortcutCategory(GXTCategoryItemInterface.SMF_DOCUMENTS);
break;
case TIME_SERIES:
fileModel.setFolderItemType(GXTFolderItemTypeEnum.TIME_SERIES);
fileModel.setShortcutCategory(GXTCategoryItemInterface.SMF_TIMESERIES);
break;
// case AQUAMAPS_ITEM:
// fileModel.setFolderItemType(GXTFolderItemTypeEnum.AQUAMAPS_ITEM);
// fileModel.setShortcutCategory(GXTCategoryItemInterface.BIODIVERSITY);
// break;
case PDF_DOCUMENT:
fileModel.setFolderItemType(GXTFolderItemTypeEnum.PDF_DOCUMENT);
fileModel.setShortcutCategory(GXTCategoryItemInterface.SMF_DOCUMENTS);
break;
case IMAGE_DOCUMENT:
fileModel.setFolderItemType(GXTFolderItemTypeEnum.IMAGE_DOCUMENT);
fileModel.setShortcutCategory(GXTCategoryItemInterface.SMF_IMAGES);
ImageDocument imgDoc = (ImageDocument) worspaceFolderItem;
fileModel.setType(imgDoc.getMimeType());
break;
case DOCUMENT:
fileModel.setFolderItemType(GXTFolderItemTypeEnum.DOCUMENT);
fileModel.setShortcutCategory(GXTCategoryItemInterface.SMF_DOCUMENTS);
Document doc = (Document) worspaceFolderItem;
fileModel.setType(doc.getMimeType());
break;
case URL_DOCUMENT:
fileModel.setFolderItemType(GXTFolderItemTypeEnum.URL_DOCUMENT);
fileModel.setShortcutCategory(GXTCategoryItemInterface.SMF_DOCUMENTS);
break;
case METADATA:
fileModel.setFolderItemType(GXTFolderItemTypeEnum.METADATA);
fileModel.setShortcutCategory(GXTCategoryItemInterface.SMF_DOCUMENTS);
break;
case WORKFLOW_REPORT:
fileModel.setFolderItemType(GXTFolderItemTypeEnum.WORKFLOW_REPORT);
fileModel.setShortcutCategory(GXTCategoryItemInterface.SMF_DOCUMENTS);
break;
case WORKFLOW_TEMPLATE:
fileModel.setFolderItemType(GXTFolderItemTypeEnum.WORKFLOW_TEMPLATE);
fileModel.setShortcutCategory(GXTCategoryItemInterface.SMF_DOCUMENTS);
// logger.trace("**************************************DOCUMENTS******* filemodel "+ fileModel.getName());
break;
case EXTERNAL_RESOURCE_LINK:
fileModel.setFolderItemType(GXTFolderItemTypeEnum.EXTERNAL_RESOURCE_LINK);
fileModel.setShortcutCategory(GXTCategoryItemInterface.SMF_LINKS);
break;
default:
fileModel.setFolderItemType(GXTFolderItemTypeEnum.UNKNOWN_TYPE);
fileModel.setShortcutCategory(GXTCategoryItemInterface.SMF_UNKNOWN);
fileModel.setType(GXTFolderItemTypeEnum.UNKNOWN_TYPE.toString());
// logger.trace("**************************************UNKNOWN******* filemodel "+ fileModel.getName());
break;
}
return fileModel;
}
public String getPubliLinkForFolderItem(FolderItem worspaceFolderItem) throws InternalErrorException{
if(worspaceFolderItem==null)
return "";
try{
switch(worspaceFolderItem.getFolderItemType())
{
case EXTERNAL_IMAGE:
return ((ExternalImage) worspaceFolderItem).getPublicLink();
case EXTERNAL_FILE:
return ((ExternalFile) worspaceFolderItem).getPublicLink();
case EXTERNAL_PDF_FILE:
return ((ExternalPDFFile) worspaceFolderItem).getPublicLink();
case EXTERNAL_URL:
break;
case REPORT_TEMPLATE:
break;
case REPORT:
break;
case QUERY:
break;
case TIME_SERIES:
break;
// case AQUAMAPS_ITEM:
// break;
case PDF_DOCUMENT:
break;
case IMAGE_DOCUMENT:
return ((ImageDocument) worspaceFolderItem).getPublicLink();
case DOCUMENT:
break;
case URL_DOCUMENT:
break;
case METADATA:
break;
case WORKFLOW_REPORT:
break;
case WORKFLOW_TEMPLATE:
break;
case EXTERNAL_RESOURCE_LINK:
break;
default:
return "";
}
}catch (Exception e) {
logger.error("an error occurred when get public link for item: "+worspaceFolderItem.getName());
return "";
}
return "";
}
/**
*
* @param wsFolder
* @param parent
* @return
* @throws InternalErrorException
*/
public FolderModel buildGXTFolderModelItem(WorkspaceFolder wsFolder, FileModel parent) throws InternalErrorException {
FolderModel folder = new FolderModel(wsFolder.getId(),wsFolder.getName(), parent, true, wsFolder.isShared());
folder.setShareable(true);
folder.setDescription(wsFolder.getDescription());
// folder.setOwner(wsFolder.getOwner());
if(parent != null && parent.isShared()){
folder.setShared(true);
folder.setShareable(false);
}
return folder;
}
public FileDetailsModel buildGWTWorkspaceFileDetails(WorkspaceItem wsItem, FileModel item) throws InternalErrorException {
FileDetailsModel fileDetailsModel = new FileDetailsModel(
wsItem.getId(),
wsItem.getName(),
wsItem.getPath(),
toDate(wsItem.getCreationTime()),
item.getParentFileModel(),
0,//size
item.isDirectory(),
wsItem.getDescription(),
toDate(wsItem.getLastModificationTime()),
buildGXTInfoContactModel(wsItem.getOwner()),
wsItem.isShared());
return fileDetailsModel;
}
// public List<FileGridModel> filterListByCategory(List<FileGridModel> listFileGridModel, String category) {
//
// List<FileGridModel> filteredList = new ArrayList<FileGridModel>();
//
// logger.trace("Category :" + category);
//
// for(FileGridModel fileGridModel: listFileGridModel){
//
// if(fileGridModel.getShortcutCategory()!=null){
//
//// logger.trace("file GridModel category:" + fileGridModel.getShortcutCategory());
//
// if(fileGridModel.getShortcutCategory().compareTo(category)==0){
// filteredList.add(fileGridModel);
// }
//
// }else
// logger.trace("file GridModel category null");
// }
//
// return filteredList;
// }
protected String getFolderItemTypeCategory(SearchItem item) throws InternalErrorException{
switch (item.getType()) {
case FOLDER:
return GXTCategoryItemInterface.SMF_DOCUMENTS;
case FOLDER_ITEM:
SearchFolderItem folderItem = (SearchFolderItem) item;
switch(folderItem.getFolderItemType())
{
case EXTERNAL_IMAGE:
return GXTCategoryItemInterface.SMF_IMAGES;
case EXTERNAL_FILE:
return GXTCategoryItemInterface.SMF_DOCUMENTS;
case EXTERNAL_PDF_FILE:
return GXTCategoryItemInterface.SMF_DOCUMENTS;
case EXTERNAL_URL:
return GXTCategoryItemInterface.SMF_LINKS;
case REPORT_TEMPLATE:
return GXTCategoryItemInterface.SMF_REPORTS;
case REPORT:
return GXTCategoryItemInterface.SMF_REPORTS;
case QUERY:
return GXTCategoryItemInterface.SMF_DOCUMENTS;
case TIME_SERIES:
return GXTCategoryItemInterface.SMF_TIMESERIES;
case AQUAMAPS_ITEM:
return GXTCategoryItemInterface.SMF_BIODIVERSITY;
case PDF_DOCUMENT:
return GXTCategoryItemInterface.SMF_DOCUMENTS;
case IMAGE_DOCUMENT:
return GXTCategoryItemInterface.SMF_IMAGES;
case DOCUMENT:
return GXTCategoryItemInterface.SMF_DOCUMENTS;
case URL_DOCUMENT:
return GXTCategoryItemInterface.SMF_DOCUMENTS;
case METADATA:
return GXTCategoryItemInterface.SMF_DOCUMENTS;
case WORKFLOW_REPORT:
return GXTCategoryItemInterface.SMF_DOCUMENTS;
case WORKFLOW_TEMPLATE:
return GXTCategoryItemInterface.SMF_DOCUMENTS;
case EXTERNAL_RESOURCE_LINK:
return GXTCategoryItemInterface.SMF_LINKS;
default:
return GXTCategoryItemInterface.SMF_UNKNOWN;
}
default:
logger.error("gxt conversion return null for item "+item.getName());
return GXTCategoryItemInterface.SMF_UNKNOWN;
}
}
public List<FileGridModel> filterListFileGridModelItemByCategory(List<SearchItem> listSearchItem, String category) throws InternalErrorException {
List<FileGridModel> filteredList = new ArrayList<FileGridModel>();
logger.trace("filterListFileGridModelItemByCategory - Category:" + category + "listSearchItem size " + listSearchItem.size());
//FOR DEBUG
// System.out.println("filterListFileGridModelItemByCategory - Category:" + category + "listSearchItem size " + listSearchItem.size());
for(SearchItem searchItem: listSearchItem){
logger.trace("wsItem: " + searchItem.getName());
// FOR DEBUG
// System.out.println("wsItem: " + searchItem.getName());
if(category.equals(getFolderItemTypeCategory(searchItem))){
filteredList.add(buildGXTFileGridModelItemForSearch(searchItem,null));
}
}
return filteredList;
}
public List<SmartFolderModel> buildGXTListSmartFolderModel(List<WorkspaceSmartFolder> listWorkspaceSmartFolder) throws InternalErrorException {
List<SmartFolderModel> listSmartFolder = new ArrayList<SmartFolderModel>();
for(WorkspaceSmartFolder workspaceFolder : listWorkspaceSmartFolder)
listSmartFolder.add(buildGXTSmartFolderModel(workspaceFolder, ""));
return listSmartFolder;
}
public SmartFolderModel buildGXTSmartFolderModel(WorkspaceSmartFolder wsFolder, String query) throws InternalErrorException {
SmartFolderModel smartFolderModel = new SmartFolderModel(
wsFolder.getId(),
wsFolder.getName(),
query);
logger.trace("in return SmartFolder: " + smartFolderModel.getIdentifier() + " " + smartFolderModel.getName() + " " + smartFolderModel.getQuery());
return smartFolderModel;
}
public List<ScopeModel> buildGXTListScopeModel(List<String> listFilteredScopes, Map<String, String> mapPortalScopes) {
List<ScopeModel> listScopeModel = new ArrayList<ScopeModel>();
// listScopeModel.add(AllScope.getScopeModel());
for(String scope: listFilteredScopes)
listScopeModel.add(new ScopeModel(mapPortalScopes.get(scope),scope));
// listScopeModel.add(new ScopeModel("1", "Aquamaps"));
// listScopeModel.add(new ScopeModel("2", "VTI"));
// listScopeModel.add(new ScopeModel("3", "TimeSeries"));
return listScopeModel;
}
public List<InfoContactModel> buildGXTListContactsModel(List<UserModel> listUsers) throws InternalErrorException {
List<InfoContactModel> listContactsModel = new ArrayList<InfoContactModel>();
if(listUsers==null)
return listContactsModel;
logger.trace("List<UserModel> size returned from Portal VO is: "+ listUsers.size());
logger.trace("Building list contact model list user model");
for (UserModel userModel : listUsers) {
String fullName = userModel.getFullname();
if(fullName!=null && !fullName.isEmpty())
listContactsModel.add(new InfoContactModel(userModel.getUserId()+"", userModel.getScreenName(), fullName));
else
logger.trace("buildGXTListContactsModel doesn't return user: "+userModel.getScreenName()+ "because name is null or empty");
}
logger.trace("List contact model completed, return " +listContactsModel.size()+" contacts");
// for(User user: listUsers){
// String fullName = UserUtil.getUserFullName(user.getPortalLogin());
//
// if(fullName!=null && !fullName.isEmpty())
// listContactsModel.add(new InfoContactModel(user.getId(), user.getPortalLogin(), fullName));
// else
// logger.trace("buildGXTListContactsModel doesn't return user: "+user.getPortalLogin()+ "because name is null or empty");
// }
return listContactsModel;
}
/**
*
* @param listContactsModel
* @return list of portal logins
* @throws InternalErrorException
*/
public List<String> buildListLoginFromContanctModel(List<InfoContactModel> listContactsModel) throws InternalErrorException {
List<String> listPortalLogin = new ArrayList<String>();
for(InfoContactModel contact: listContactsModel){
listPortalLogin.add(contact.getLogin());
}
return listPortalLogin;
}
public List<MessageModel> buildGXTListMessageModelForGrid(List<WorkspaceMessage> listMessages, String typeMessages) throws InternalErrorException {
List<MessageModel> listMessageModel = new ArrayList<MessageModel>();
for(WorkspaceMessage mess: listMessages){
List<WorkspaceItem> listAttachs = mess.getAttachments();
List<String> listAttachsNames = new ArrayList<String>();
logger.trace("IN SERVER MESSAGE TYPE: " +typeMessages);
logger.trace("subject " + mess.getSubject());
if(listAttachs!=null){
for(WorkspaceItem attach: listAttachs){
listAttachsNames.add(attach.getName());
logger.trace("Received attach: "+ attach.getName() + " " +attach.getId());
}
}
listMessageModel.add(new MessageModel(mess.getId(), mess.getSubject(), buildGXTInfoContactModel(mess.getSender()), toDate(mess.getSendTime()), listAttachsNames, typeMessages, mess.isRead()));
}
// listMessageModel.add(new MessageModel("1", "subject", new InfoContactModel("1", "Federico"), "2001.07.04 at 12:08:56", 5));
// listMessageModel.add(new MessageModel("2", "subject 2", new InfoContactModel("1", "Federico"), "2005.07.04 at 12:08:56", 2));
// listMessageModel.add(new MessageModel("3", "subject 3", new InfoContactModel("3", "Francesco"), "2001.07.04 at 15:08:56", 3));
return listMessageModel;
}
public MessageModel buildGXTMessageModel(WorkspaceMessage mess, List<WorkspaceItem> listWorkspaceItems, String messageType) throws InternalErrorException {
List<FileModel> listAttachs = buildGXTListFileModelItemForAttachs(listWorkspaceItems);
// List<InfoContactModel> listContacts = new ArrayList<InfoContactModel>();
// mess.getAddresses();
// listContacts.add(new InfoContactModel("1", "Empty"));
return new MessageModel(mess.getId(), mess.getSubject(), buildGXTInfoContactModel(mess.getSender()), toDate(mess.getSendTime()), mess.getBody(), listAttachs, mess.getAddresses(), messageType, mess.isRead());
}
/**
*
* @param user
* @return InfoContactModel
* @throws InternalErrorException
*/
public InfoContactModel buildGXTInfoContactModel(User user) throws InternalErrorException{
if(user!=null)
return new InfoContactModel(user.getId(), user.getPortalLogin(), UserUtil.getUserFullName(user.getPortalLogin()));
return new InfoContactModel();
}
// private static float counter = 0;
public List<BulkCreatorModel> buildGXTListBulkCreatorModel(List<FolderBulkCreator> listFBC) throws InternalErrorException {
List<BulkCreatorModel> listBulkCreatorModel = new ArrayList<BulkCreatorModel>();
for (FolderBulkCreator item : listFBC){
BulkCreatorModel bulk;
if(item.getStatus()<1)
bulk = new BulkCreatorModel(item.getId(), item.getDestinationFolder().getName(), item.getStatus(), BulkCreatorModel.ONGOING, item.getNumberOfRequests(), item.getFailures());
else{//status = 1
int failures = item.getFailures();
if(failures==0)
bulk = new BulkCreatorModel(item.getId(), item.getDestinationFolder().getName(), item.getStatus(), BulkCreatorModel.COMPLETED, item.getNumberOfRequests(), item.getFailures());
else
if(failures<item.getNumberOfRequests())
bulk = new BulkCreatorModel(item.getId(), item.getDestinationFolder().getName(), item.getStatus(), BulkCreatorModel.FAILED, item.getNumberOfRequests(), item.getFailures());
else
bulk = new BulkCreatorModel(item.getId(), item.getDestinationFolder().getName(), item.getStatus(), BulkCreatorModel.FAILED, item.getNumberOfRequests(), item.getFailures());
}
listBulkCreatorModel.add(bulk);
}
// //TODO EXAMPLES
//
// if(counter < 0.4){
// listBulkCreatorModel.add(new BulkCreatorModel("1", "Test 1", counter, BulkCreatorModel.ONGOING, 5, 0));
// listBulkCreatorModel.add(new BulkCreatorModel("2", "Test 2", counter, BulkCreatorModel.ONGOING, 5, 0));
// listBulkCreatorModel.add(new BulkCreatorModel("3", "Test 3", counter, BulkCreatorModel.ONGOING, 5, 0));
// listBulkCreatorModel.add(new BulkCreatorModel("4", "Test 4", counter, BulkCreatorModel.ONGOING, 5, 0));
// listBulkCreatorModel.add(new BulkCreatorModel("5", "Test 5", counter, BulkCreatorModel.ONGOING, 5, 0));
// listBulkCreatorModel.add(new BulkCreatorModel("6", "Test 6", counter, BulkCreatorModel.ONGOING, 5, 0));
// }
//
// else{
//
//// float perc = (float) 0.8;
//
// listBulkCreatorModel.add(new BulkCreatorModel("1", "Test 1", (float) 1, BulkCreatorModel.FAILED, 5, 3));
// listBulkCreatorModel.add(new BulkCreatorModel("2", "Test 2", (float) 1, BulkCreatorModel.FAILED, 5, 4));
// listBulkCreatorModel.add(new BulkCreatorModel("3", "Test 3", counter, BulkCreatorModel.COMPLETED, 5, 0));
// listBulkCreatorModel.add(new BulkCreatorModel("4", "Test 4", counter, BulkCreatorModel.ONGOING, 5, 0));
// listBulkCreatorModel.add(new BulkCreatorModel("5", "Test 5", counter, BulkCreatorModel.ONGOING, 5, 0));
// listBulkCreatorModel.add(new BulkCreatorModel("6", "Test 6", counter, BulkCreatorModel.ONGOING, 5, 0));
// }
//
//
//
//
// counter+=0.2;
//
// if(counter>1)
// counter=0;
return listBulkCreatorModel;
}
/**
* @param accouting
*/
public List<GxtAccountingField> buildGXTAccountingItem(List<AccountingEntry> accoutings, GxtAccountingEntryType gxtEntryType) {
List<GxtAccountingField> listAccFields = new ArrayList<GxtAccountingField>();
if(accoutings!=null){
logger.trace("accoutings size "+accoutings.size()+ "converting");
for (AccountingEntry accountingEntry : accoutings) {
GxtAccountingField af = new GxtAccountingField();
InfoContactModel user = buildGxtInfoContactFromPortalLogin(accountingEntry.getUser());
af.setUser(user);
af.setDate(toDate(accountingEntry.getDate()));
switch (accountingEntry.getEntryType()) {
case CREATE:
if(gxtEntryType==null || gxtEntryType.equals(GxtAccountingEntryType.ALL) || gxtEntryType.equals(GxtAccountingEntryType.ALLWITHOUTREAD) || gxtEntryType.equals(GxtAccountingEntryType.CREATE)){
AccountingEntryCreate create = (AccountingEntryCreate) accountingEntry;
af.setOperation(GxtAccountingEntryType.CREATE);
// af.setDescription(GxtAccountingEntryType.CREATE.getName() + " by "+user.getName());
String msg = "";
if(create.getItemName()==null || create.getItemName().isEmpty())
msg = GxtAccountingEntryType.CREATE.getId() + " by "+user.getName();
else
msg = create.getItemName() + " " + GxtAccountingEntryType.CREATE.getName() + " by "+user.getName();
af.setDescription(msg);
}
break;
case READ:
if(gxtEntryType==null || gxtEntryType.equals(GxtAccountingEntryType.ALL) || gxtEntryType.equals(GxtAccountingEntryType.READ)){
AccountingEntryRead read = (AccountingEntryRead) accountingEntry;
af.setOperation(GxtAccountingEntryType.READ);
// af.setDescription(GxtAccountingEntryType.READ.getName() + " by "+user.getName());
af.setDescription(read.getItemName() + " " + GxtAccountingEntryType.READ.getName() + " by "+user.getName());
String msg = "";
if(read.getItemName()==null || read.getItemName().isEmpty())
msg = GxtAccountingEntryType.READ.getId() + " by "+user.getName();
else
msg = read.getItemName() + " " + GxtAccountingEntryType.READ.getName() + " by "+user.getName();
af.setDescription(msg);
}
break;
case CUT:
if(gxtEntryType==null || gxtEntryType.equals(GxtAccountingEntryType.ALL) || gxtEntryType.equals(GxtAccountingEntryType.ALLWITHOUTREAD) || gxtEntryType.equals(GxtAccountingEntryType.CUT)){
af.setOperation(GxtAccountingEntryType.CUT);
AccountingEntryCut cut = (AccountingEntryCut) accountingEntry;
// af.setDescription(GxtAccountingEntryType.CUT.getName()+ " "+cut.getItemName()+" by "+user.getName());
String msg = "";
if(cut.getItemName()==null || cut.getItemName().isEmpty())
msg = GxtAccountingEntryType.CUT.getName() +" by "+user.getName();
else
msg = cut.getItemName()+" "+GxtAccountingEntryType.CUT.getName() +" by "+user.getName();
af.setDescription(msg);
// af.setDescription(cut.getItemName()+" "+GxtAccountingEntryType.CUT.getName() +" by "+user.getName());
}
break;
case PASTE:
if(gxtEntryType==null || gxtEntryType.equals(GxtAccountingEntryType.ALL) || gxtEntryType.equals(GxtAccountingEntryType.ALLWITHOUTREAD) || gxtEntryType.equals(GxtAccountingEntryType.PASTE)){
af.setOperation(GxtAccountingEntryType.PASTE);
AccountingEntryPaste paste = (AccountingEntryPaste) accountingEntry;
af.setDescription(GxtAccountingEntryType.PASTE.getName() + " from "+paste.getFromPath()+" by "+user.getName());
}
break;
case REMOVAL:
if(gxtEntryType==null || gxtEntryType.equals(GxtAccountingEntryType.ALL) || gxtEntryType.equals(GxtAccountingEntryType.ALLWITHOUTREAD) || gxtEntryType.equals(GxtAccountingEntryType.REMOVE)){
af.setOperation(GxtAccountingEntryType.REMOVE);
AccountingEntryRemoval rem = (AccountingEntryRemoval) accountingEntry;
String msg = "";
if(rem.getItemName()==null || rem.getItemName().isEmpty())
msg = GxtAccountingEntryType.REMOVE.getName() +" by "+user.getName();
else
msg = rem.getItemName() + " "+GxtAccountingEntryType.REMOVE.getName() +" by "+user.getName();
af.setDescription(msg);
// af.setDescription(GxtAccountingEntryType.REMOVE.getName() + " "+rem.getItemName()+" by "+user.getName());
// af.setDescription(rem.getItemName() + " "+GxtAccountingEntryType.REMOVE.getName() +" by "+user.getName());
}
break;
case RENAMING:
if(gxtEntryType==null || gxtEntryType.equals(GxtAccountingEntryType.ALL) || gxtEntryType.equals(GxtAccountingEntryType.ALLWITHOUTREAD) || gxtEntryType.equals(GxtAccountingEntryType.RENAME)){
af.setOperation(GxtAccountingEntryType.RENAME);
AccountingEntryRenaming ren = (AccountingEntryRenaming) accountingEntry;
String msg = "";
if(ren.getOldItemName()==null || ren.getOldItemName().isEmpty())
msg = GxtAccountingEntryType.RENAME.getName()+ " by "+user.getName();
else
msg = ren.getOldItemName() +" "+GxtAccountingEntryType.RENAME.getName()+ " by "+user.getName();
af.setDescription(msg);
// af.setDescription(GxtAccountingEntryType.RENAME.getName()+" from "+ren.getOldItemName() + " by "+user.getName());
// af.setDescription(ren.getOldItemName() +" "+GxtAccountingEntryType.RENAME.getName()+ " by "+user.getName());
}
break;
case ADD:
if(gxtEntryType==null || gxtEntryType.equals(GxtAccountingEntryType.ALL) || gxtEntryType.equals(GxtAccountingEntryType.ALLWITHOUTREAD) || gxtEntryType.equals(GxtAccountingEntryType.ADD)){
af.setOperation(GxtAccountingEntryType.ADD);
AccountingEntryAdd acc = (AccountingEntryAdd) accountingEntry;
String msg = "";
if(acc.getItemName()==null || acc.getItemName().isEmpty())
msg = GxtAccountingEntryType.ADD.getName()+ " by "+user.getName();
else
msg = acc.getItemName() + " "+GxtAccountingEntryType.ADD.getName()+ " by "+user.getName();
af.setDescription(msg);
// af.setDescription(acc.getItemName() + " "+GxtAccountingEntryType.ADD.getName()+ " by "+user.getName());
}
break;
case UPDATE:
if(gxtEntryType==null || gxtEntryType.equals(GxtAccountingEntryType.ALL) || gxtEntryType.equals(GxtAccountingEntryType.ALLWITHOUTREAD) || gxtEntryType.equals(GxtAccountingEntryType.UPDATE)){
af.setOperation(GxtAccountingEntryType.UPDATE);
AccountingEntryUpdate acc = (AccountingEntryUpdate) accountingEntry;
String msg = "";
if(acc.getItemName()==null || acc.getItemName().isEmpty())
msg = GxtAccountingEntryType.UPDATE.getName()+" by "+user.getName();
else
msg = acc.getItemName() +" "+GxtAccountingEntryType.UPDATE.getName()+" by "+user.getName();
af.setDescription(msg);
// af.setDescription(GxtAccountingEntryType.UPDATE.getName()+ " "+acc.getItemName() +" by "+user.getName());
// af.setDescription(acc.getItemName() +" "+GxtAccountingEntryType.UPDATE.getName()+" by "+user.getName());
}
break;
case SHARE:
if(gxtEntryType==null || gxtEntryType.equals(GxtAccountingEntryType.ALL) || gxtEntryType.equals(GxtAccountingEntryType.ALLWITHOUTREAD) || gxtEntryType.equals(GxtAccountingEntryType.SHARE)){
af.setOperation(GxtAccountingEntryType.SHARE);
AccountingEntryShare acc = (AccountingEntryShare) accountingEntry;
List<String> listContacts = new ArrayList<String>();
if(acc.getMembers()!=null && acc.getMembers().size()>0){
listContacts = acc.getMembers();
}
String msg = "";
if(acc.getItemName()==null || acc.getItemName().isEmpty())
msg = user.getName() + " "+GxtAccountingEntryType.SHARE.getName()+ " workspace folder";
// msg = GxtAccountingEntryType.SHARE.getName()+" by "+user.getName();
else
msg = user.getName() + " "+GxtAccountingEntryType.SHARE.getName()+ " workspace folder "+acc.getItemName();
// msg = acc.getItemName() +" "+GxtAccountingEntryType.SHARE.getName()+" by "+user.getName();
if(listContacts.size()>0){
msg+=" with "+UserUtil.separateFullNameToCommaForPortalLogin(acc.getMembers());
}
af.setDescription(msg);
}
break;
case UNSHARE:
if(gxtEntryType==null || gxtEntryType.equals(GxtAccountingEntryType.ALL) || gxtEntryType.equals(GxtAccountingEntryType.ALLWITHOUTREAD) || gxtEntryType.equals(GxtAccountingEntryType.UNSHARE)){
af.setOperation(GxtAccountingEntryType.UNSHARE);
AccountingEntryUnshare acc = (AccountingEntryUnshare) accountingEntry;
String msg = "";
if(acc.getItemName()==null || acc.getItemName().isEmpty())
msg = GxtAccountingEntryType.UNSHARE.getName()+" by "+user.getName();
else
msg = acc.getItemName() +" "+GxtAccountingEntryType.UNSHARE.getName()+" by "+user.getName();
af.setDescription(msg);
}
break;
}
listAccFields.add(af);
}
}
logger.trace("get accounting readers converting completed - returning size "+listAccFields.size());
return listAccFields;
}
/**
* @param readers
* @return
*/
public List<GxtAccountingField> buildGXTAccountingItemFromReaders(List<AccountingEntryRead> readers) {
List<GxtAccountingField> listAccFields = new ArrayList<GxtAccountingField>();
if(readers!=null){
for (AccountingEntryRead accReader : readers) {
GxtAccountingField af = new GxtAccountingField();
InfoContactModel user = buildGxtInfoContactFromPortalLogin(accReader.getUser());
af.setUser(user);
af.setDate(toDate(accReader.getDate()));
af.setOperation(GxtAccountingEntryType.READ);
// af.setDescription(GxtAccountingEntryType.READ.getName() +" by "+user.getName());
String msg = "";
if(accReader.getItemName()==null || accReader.getItemName().isEmpty())
msg = GxtAccountingEntryType.READ.getName() + " by "+user.getName();
else
msg = accReader.getItemName() + " " + GxtAccountingEntryType.READ.getName() + " by "+user.getName();
af.setDescription(msg);
// af.setDescription(accReader.getItemName() + " " + GxtAccountingEntryType.READ.getName() + " by "+user.getName());
listAccFields.add(af);
}
}
return listAccFields;
}
/**
* @param infoContactModel
*/
public void setUserLogged(InfoContactModel infoContactModel) {
this.userLogged = infoContactModel;
}
}