Working on Feature #9760: WS-Thredds synch folder integration
git-svn-id: http://svn.d4science-ii.research-infrastructures.eu/gcube/trunk/portlets/user/workspace-tree-widget@154685 82a268e6-3cf1-43bd-a215-b396298e98cf
This commit is contained in:
parent
920c28bd88
commit
6d15e51493
|
@ -219,7 +219,7 @@ public class DialogPublishOnThredds extends Dialog {
|
||||||
@Override
|
@Override
|
||||||
public void onSuccess(TransferOnThreddsReport result) {
|
public void onSuccess(TransferOnThreddsReport result) {
|
||||||
GWT.log("Publishing on Thredds return: "+result);
|
GWT.log("Publishing on Thredds return: "+result);
|
||||||
InfoDisplay.display("Transferring on Thredds", "Transferring started correclty...");
|
InfoDisplay.display("On going", "Transferring started correclty...");
|
||||||
if(result!=null){
|
if(result!=null){
|
||||||
pollingStart(result);
|
pollingStart(result);
|
||||||
}else
|
}else
|
||||||
|
|
|
@ -4176,10 +4176,8 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT
|
||||||
workspaceLogger.debug("getListOfVREsForLoggedUser...: ");
|
workspaceLogger.debug("getListOfVREsForLoggedUser...: ");
|
||||||
//PortalContextInfo context = WsUtil.getPortalContext(this.getThreadLocalRequest());
|
//PortalContextInfo context = WsUtil.getPortalContext(this.getThreadLocalRequest());
|
||||||
GCubeUser user = PortalContext.getConfiguration().getCurrentUser(this.getThreadLocalRequest());
|
GCubeUser user = PortalContext.getConfiguration().getCurrentUser(this.getThreadLocalRequest());
|
||||||
|
|
||||||
long userId = user.getUserId();
|
long userId = user.getUserId();
|
||||||
|
|
||||||
|
|
||||||
// Instanciate the manager
|
// Instanciate the manager
|
||||||
GroupManager groupManager = new LiferayGroupManager();
|
GroupManager groupManager = new LiferayGroupManager();
|
||||||
List<GcubeVRE> listOfVres = new ArrayList<GcubeVRE>();
|
List<GcubeVRE> listOfVres = new ArrayList<GcubeVRE>();
|
||||||
|
@ -4228,14 +4226,18 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT
|
||||||
@Override
|
@Override
|
||||||
public TransferOnThreddsReport publishOnThreddsCatalogue(String folderToPublishId, String folderMetadataId, String vreScope, String catalogueName) throws Exception{
|
public TransferOnThreddsReport publishOnThreddsCatalogue(String folderToPublishId, String folderMetadataId, String vreScope, String catalogueName) throws Exception{
|
||||||
workspaceLogger.info("Publishing on thredds the folderId: "+folderToPublishId+", metafolderId: "+folderMetadataId +", vre scope: "+vreScope);
|
workspaceLogger.info("Publishing on thredds the folderId: "+folderToPublishId+", metafolderId: "+folderMetadataId +", vre scope: "+vreScope);
|
||||||
|
System.out.println("Publishing on thredds the folderId: "+folderToPublishId+", metafolderId: "+folderMetadataId +", vre scope: "+vreScope);
|
||||||
try{
|
try{
|
||||||
GCubeUser user = PortalContext.getConfiguration().getCurrentUser(this.getThreadLocalRequest());
|
GCubeUser user = PortalContext.getConfiguration().getCurrentUser(this.getThreadLocalRequest());
|
||||||
String userToken = PortalContext.getConfiguration().getCurrentUserToken(vreScope, user.getUsername());
|
String wsUserToken = PortalContext.getConfiguration().getCurrentScope(this.getThreadLocalRequest());
|
||||||
|
String targetScopeUserToken = PortalContext.getConfiguration().getCurrentUserToken(vreScope, user.getUsername());
|
||||||
|
|
||||||
PublishOnThredds pub = new PublishOnThredds(vreScope, user.getUsername(), this.getThreadLocalRequest().getSession());
|
if (isTestMode()){
|
||||||
|
targetScopeUserToken = "89257623-0570-4fbe-a15b-458bb84f4902-98187548"; //TOKEN NEXTNEXT by FRANCESCO
|
||||||
|
}
|
||||||
|
|
||||||
return pub.publishFolder(folderToPublishId, folderMetadataId, userToken, catalogueName);
|
PublishOnThredds pub = new PublishOnThredds(wsUserToken, user.getUsername(), this.getThreadLocalRequest().getSession());
|
||||||
|
return pub.publishFolder(folderToPublishId, folderMetadataId, targetScopeUserToken, catalogueName);
|
||||||
}catch(Exception e){
|
}catch(Exception e){
|
||||||
workspaceLogger.error("Error occurred server-side when transfer to Thredds: ", e);
|
workspaceLogger.error("Error occurred server-side when transfer to Thredds: ", e);
|
||||||
throw new Exception("Sorry, an error occurred server-side performing transfer to Thredds, try again later");
|
throw new Exception("Sorry, an error occurred server-side performing transfer to Thredds, try again later");
|
||||||
|
|
|
@ -7,6 +7,8 @@ import java.io.File;
|
||||||
import java.io.FileInputStream;
|
import java.io.FileInputStream;
|
||||||
import java.io.FileNotFoundException;
|
import java.io.FileNotFoundException;
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
|
import java.sql.Timestamp;
|
||||||
|
import java.text.SimpleDateFormat;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
|
@ -46,16 +48,19 @@ public class PublishOnThredds {
|
||||||
private Logger logger = Logger.getLogger(ApplicationProfileReader.class);
|
private Logger logger = Logger.getLogger(ApplicationProfileReader.class);
|
||||||
private String username;
|
private String username;
|
||||||
private HttpSession httpSession;
|
private HttpSession httpSession;
|
||||||
|
private String wsScopeUserToken;
|
||||||
|
private static final SimpleDateFormat sdf = new SimpleDateFormat("yyyy.MM.dd.HH.mm.ss");
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Instantiates a new publish on thredds.
|
* Instantiates a new publish on thredds.
|
||||||
*
|
*
|
||||||
* @param publishingScope the publishing scope
|
* @param wsScopeUserToken the ws scope user token
|
||||||
* @param username the username
|
* @param username the username
|
||||||
* @param httpSession the http session
|
* @param httpSession the http session
|
||||||
*/
|
*/
|
||||||
public PublishOnThredds(String publishingScope, String username, HttpSession httpSession) {
|
public PublishOnThredds(String wsScopeUserToken, String username, HttpSession httpSession) {
|
||||||
TokenSetter.set(publishingScope);
|
this.wsScopeUserToken = wsScopeUserToken;
|
||||||
this.configs = new HashSet<FolderConfiguration>();
|
this.configs = new HashSet<FolderConfiguration>();
|
||||||
this.username = username;
|
this.username = username;
|
||||||
this.httpSession = httpSession;
|
this.httpSession = httpSession;
|
||||||
|
@ -83,64 +88,75 @@ public class PublishOnThredds {
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
|
|
||||||
WsUtil.setTransferPublishingOnThredds(httpSession, tr);
|
try{
|
||||||
|
|
||||||
FolderConfiguration folderConfig=new FolderConfiguration(publishingUserToken,folderId,catalogueName);
|
WsUtil.setTransferPublishingOnThredds(httpSession, tr);
|
||||||
folderConfig.setProvidedMetadata(false);
|
System.out.println("Setting ws user token : "+publishingUserToken);
|
||||||
|
|
||||||
if(metadataFolderID!=null){
|
TokenSetter.setToken(wsScopeUserToken);
|
||||||
folderConfig.setProvidedMetadata(true);
|
FolderConfiguration folderConfig=new FolderConfiguration(publishingUserToken,folderId,catalogueName);
|
||||||
folderConfig.setMetadataFolderId(metadataFolderID);
|
folderConfig.setProvidedMetadata(false);
|
||||||
}
|
|
||||||
configs.add(folderConfig);
|
|
||||||
TransferRequestServer server=new TransferRequestServer();
|
|
||||||
for(FolderConfiguration entry:configs){
|
|
||||||
|
|
||||||
try{
|
if(metadataFolderID!=null){
|
||||||
Workspace ws = HomeLibrary.getHomeManagerFactory().getHomeManager().getHome(username).getWorkspace();
|
folderConfig.setProvidedMetadata(true);
|
||||||
// FolderReport report=new FolderReport(entry);
|
folderConfig.setMetadataFolderId(metadataFolderID);
|
||||||
logger.debug("Managing {} "+entry);
|
|
||||||
WorkspaceFolder folder = (WorkspaceFolder) ws.getItem(entry.getFolderId());
|
|
||||||
PublishFolders.handleFolder(ws,entry,server,folder);
|
|
||||||
|
|
||||||
|
|
||||||
}catch(WorkspaceException | HomeNotFoundException | InternalErrorException | UserNotFoundException e){
|
|
||||||
logger.error("WORKSPACE EXC ", e);
|
|
||||||
setStatusOnTransferId(transferId, true, "Sorry, an error has occurred during getting workspace for user: "+e.getMessage(), false);
|
|
||||||
}catch(Exception e){
|
|
||||||
logger.error("UNEXPECTED EXC ", e);
|
|
||||||
setStatusOnTransferId(transferId, true, "Sorry, an unexpected error has occurred during getting workspace for user", false);
|
|
||||||
}
|
}
|
||||||
}
|
configs.add(folderConfig);
|
||||||
|
TransferRequestServer server=new TransferRequestServer();
|
||||||
|
for(FolderConfiguration entry:configs){
|
||||||
|
|
||||||
logger.info("Waiting for service.. ");
|
try{
|
||||||
server.waitCompletion();
|
Workspace ws = HomeLibrary.getHomeManagerFactory().getHomeManager().getHome(username).getWorkspace();
|
||||||
|
// FolderReport report=new FolderReport(entry);
|
||||||
|
logger.debug("Managing {} "+entry);
|
||||||
|
WorkspaceFolder folder = (WorkspaceFolder) ws.getItem(entry.getFolderId());
|
||||||
|
PublishFolders.handleFolder(ws,entry,server,folder);
|
||||||
|
|
||||||
Report report = server.getReport();
|
|
||||||
File reportFile = report.toFile(folderConfig);
|
|
||||||
if(reportFile!=null){
|
|
||||||
Workspace workspace;
|
|
||||||
try {
|
|
||||||
workspace = HomeLibrary.getHomeManagerFactory().getHomeManager().getHome(username).getWorkspace();
|
|
||||||
InputStream fileData = new FileInputStream(reportFile);
|
|
||||||
workspace.createExternalFile("Publishing on thredds report file", "", "text/plain", fileData, folderId);
|
|
||||||
setStatusOnTransferId(transferId, false, "Sorry, an unexpected error has occurred during getting workspace for user",true);
|
|
||||||
|
|
||||||
|
}catch(WorkspaceException | HomeNotFoundException | InternalErrorException | UserNotFoundException e){
|
||||||
|
logger.error("WORKSPACE EXC ", e);
|
||||||
|
setStatusOnTransferId(transferId, true, "Sorry, an error has occurred during getting workspace for user: "+e.getMessage(), false);
|
||||||
|
}catch(Exception e){
|
||||||
|
logger.error("UNEXPECTED EXC ", e);
|
||||||
|
setStatusOnTransferId(transferId, true, "Sorry, an unexpected error has occurred during getting workspace for user", false);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
catch (WorkspaceFolderNotFoundException
|
|
||||||
| InternalErrorException
|
logger.info("Waiting for service.. ");
|
||||||
| HomeNotFoundException
|
server.waitCompletion();
|
||||||
| UserNotFoundException e) {
|
|
||||||
logger.error("Error on getting workspace for thredds transferring to folder: "+folderId, e);
|
Report report = server.getReport();
|
||||||
setStatusOnTransferId(transferId, true, "Sorry, an error has occurred during getting workspace for user: "+e.getMessage(),false);
|
File reportFile = report.toFile(folderConfig);
|
||||||
}
|
if(reportFile!=null){
|
||||||
catch (FileNotFoundException | InsufficientPrivilegesException | ItemAlreadyExistException | WrongDestinationException e) {
|
Workspace workspace;
|
||||||
// TODO Auto-generated catch block
|
try {
|
||||||
logger.error("Error on writing report for thredds transferring to folder: "+folderId, e);
|
workspace = HomeLibrary.getHomeManagerFactory().getHomeManager().getHome(username).getWorkspace();
|
||||||
setStatusOnTransferId(transferId, true, "Sorry, an error has occurred during report creation to transfer resulting: "+e.getMessage(),false);
|
InputStream fileData = new FileInputStream(reportFile);
|
||||||
|
Timestamp timestamp = new Timestamp(System.currentTimeMillis());
|
||||||
|
workspace.createExternalFile("Transferring on Thredds report file "+sdf.format(timestamp), "", "text/plain", fileData, folderId);
|
||||||
|
setStatusOnTransferId(transferId, false, "Sorry, an unexpected error has occurred during getting workspace for user",true);
|
||||||
|
|
||||||
|
}
|
||||||
|
catch (WorkspaceFolderNotFoundException
|
||||||
|
| InternalErrorException
|
||||||
|
| HomeNotFoundException
|
||||||
|
| UserNotFoundException e) {
|
||||||
|
logger.error("Error on getting workspace for thredds transferring to folder: "+folderId, e);
|
||||||
|
setStatusOnTransferId(transferId, true, "Sorry, an error has occurred during getting workspace for user: "+e.getMessage(),false);
|
||||||
|
}
|
||||||
|
catch (FileNotFoundException | InsufficientPrivilegesException | ItemAlreadyExistException | WrongDestinationException e) {
|
||||||
|
// TODO Auto-generated catch block
|
||||||
|
logger.error("Error on writing report for thredds transferring to folder: "+folderId, e);
|
||||||
|
setStatusOnTransferId(transferId, true, "Sorry, an error has occurred during report creation to transfer resulting: "+e.getMessage(),false);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
}catch(Exception e){
|
||||||
|
logger.error("Unexpected error has occurred when performing the tranferring to Thredds, folderID is: "+folderId, e);
|
||||||
|
e.printStackTrace();
|
||||||
|
setStatusOnTransferId(transferId, true, "Sorry, an unexpected error has occurred when performing the tranferring on Thredds. Refresh and try again later",false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}.start();
|
}.start();
|
||||||
|
|
||||||
return tr;
|
return tr;
|
||||||
|
|
Loading…
Reference in New Issue