1*34dd1e25SAndrew Rist /************************************************************** 2*34dd1e25SAndrew Rist * 3*34dd1e25SAndrew Rist * Licensed to the Apache Software Foundation (ASF) under one 4*34dd1e25SAndrew Rist * or more contributor license agreements. See the NOTICE file 5*34dd1e25SAndrew Rist * distributed with this work for additional information 6*34dd1e25SAndrew Rist * regarding copyright ownership. The ASF licenses this file 7*34dd1e25SAndrew Rist * to you under the Apache License, Version 2.0 (the 8*34dd1e25SAndrew Rist * "License"); you may not use this file except in compliance 9*34dd1e25SAndrew Rist * with the License. You may obtain a copy of the License at 10*34dd1e25SAndrew Rist * 11*34dd1e25SAndrew Rist * http://www.apache.org/licenses/LICENSE-2.0 12*34dd1e25SAndrew Rist * 13*34dd1e25SAndrew Rist * Unless required by applicable law or agreed to in writing, 14*34dd1e25SAndrew Rist * software distributed under the License is distributed on an 15*34dd1e25SAndrew Rist * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16*34dd1e25SAndrew Rist * KIND, either express or implied. See the License for the 17*34dd1e25SAndrew Rist * specific language governing permissions and limitations 18*34dd1e25SAndrew Rist * under the License. 19*34dd1e25SAndrew Rist * 20*34dd1e25SAndrew Rist *************************************************************/ 21*34dd1e25SAndrew Rist 22*34dd1e25SAndrew Rist 23cdf0e10cSrcweir 24cdf0e10cSrcweir import com.sun.star.ucb.NameClash; 25cdf0e10cSrcweir import com.sun.star.ucb.TransferCommandOperation; 26cdf0e10cSrcweir import com.sun.star.ucb.GlobalTransferCommandArgument; 27cdf0e10cSrcweir import com.sun.star.uno.UnoRuntime; 28cdf0e10cSrcweir import com.sun.star.uno.XInterface; 29cdf0e10cSrcweir 30cdf0e10cSrcweir /** 31cdf0e10cSrcweir * Copying, Moving and Creating Links to a Resource 32cdf0e10cSrcweir */ 33cdf0e10cSrcweir public class ResourceManager { 34cdf0e10cSrcweir 35cdf0e10cSrcweir /** 36cdf0e10cSrcweir * Member properties 37cdf0e10cSrcweir */ 38cdf0e10cSrcweir private Helper m_helper; 39cdf0e10cSrcweir private XInterface m_ucb; 40cdf0e10cSrcweir private String m_contenturl = ""; 41cdf0e10cSrcweir private String m_srcURL = ""; 42cdf0e10cSrcweir private String m_targetFolderURL = ""; 43cdf0e10cSrcweir private String m_newTitle = ""; 44cdf0e10cSrcweir private String m_transOperation = ""; 45cdf0e10cSrcweir 46cdf0e10cSrcweir /** 47cdf0e10cSrcweir * Constructor. 48cdf0e10cSrcweir * 49cdf0e10cSrcweir *@param String[] This construtor requires the arguments: 50cdf0e10cSrcweir * -url=... (optional) 51cdf0e10cSrcweir * -targetFolderURL=... (optional) 52cdf0e10cSrcweir * -newTitle=... (optional) 53cdf0e10cSrcweir * -transOper=... (optional) 54cdf0e10cSrcweir * -workdir=... (optional) 55cdf0e10cSrcweir * See Help (method printCmdLineUsage()). 56cdf0e10cSrcweir * Without the arguments a new connection to a 57cdf0e10cSrcweir * running office cannot created. 58cdf0e10cSrcweir *@exception java.lang.Exception 59cdf0e10cSrcweir */ ResourceManager( String args[] )60cdf0e10cSrcweir public ResourceManager( String args[] ) throws java.lang.Exception { 61cdf0e10cSrcweir 62cdf0e10cSrcweir // Parse arguments 63cdf0e10cSrcweir parseArguments( args ); 64cdf0e10cSrcweir 65cdf0e10cSrcweir // Init 66cdf0e10cSrcweir m_helper = new Helper( getContentURL() ); 67cdf0e10cSrcweir 68cdf0e10cSrcweir // Get xUCB 69cdf0e10cSrcweir m_ucb = m_helper.getUCB(); 70cdf0e10cSrcweir } 71cdf0e10cSrcweir 72cdf0e10cSrcweir /** 73cdf0e10cSrcweir * Copy, move or create a link for a resource. 74cdf0e10cSrcweir * This method requires the main and the optional arguments to be set in order to work. 75cdf0e10cSrcweir * See Constructor. 76cdf0e10cSrcweir * 77cdf0e10cSrcweir *@return boolean Returns true if resource successfully transfered, false otherwise 78cdf0e10cSrcweir *@exception com.sun.star.ucb.CommandAbortedException 79cdf0e10cSrcweir *@exception com.sun.star.uno.Exception 80cdf0e10cSrcweir */ transferResource()81cdf0e10cSrcweir public boolean transferResource() 82cdf0e10cSrcweir throws com.sun.star.ucb.CommandAbortedException, com.sun.star.uno.Exception { 83cdf0e10cSrcweir String sourceURL = getContentURL(); // URL of the source object 84cdf0e10cSrcweir String targetFolderURL = getTargetFolderURL(); // URL of the target folder 85cdf0e10cSrcweir String newTitle = getNewTitle(); // New name for the resource 86cdf0e10cSrcweir String transOperation = getTransOperation(); 87cdf0e10cSrcweir return transferResource( sourceURL, targetFolderURL, newTitle, transOperation ); 88cdf0e10cSrcweir } 89cdf0e10cSrcweir 90cdf0e10cSrcweir /** 91cdf0e10cSrcweir * Copy, move or create a link for a resource. 92cdf0e10cSrcweir * 93cdf0e10cSrcweir *@param String Source URL 94cdf0e10cSrcweir *@param String Target folder URL 95cdf0e10cSrcweir *@param String Transfering operation (copy, move, link) 96cdf0e10cSrcweir *@return boolean Returns true if resource successfully transfered, false otherwise 97cdf0e10cSrcweir *@exception com.sun.star.ucb.CommandAbortedException 98cdf0e10cSrcweir *@exception com.sun.star.uno.Exception 99cdf0e10cSrcweir */ transferResource( String sourceURL, String targetFolderURL, String newTitle, String transOperation )100cdf0e10cSrcweir public boolean transferResource( 101cdf0e10cSrcweir String sourceURL, String targetFolderURL, 102cdf0e10cSrcweir String newTitle, String transOperation ) 103cdf0e10cSrcweir throws com.sun.star.ucb.CommandAbortedException, com.sun.star.uno.Exception { 104cdf0e10cSrcweir 105cdf0e10cSrcweir boolean result = false; 106cdf0e10cSrcweir if ( m_ucb != null && sourceURL != null && !sourceURL.equals( "" ) && 107cdf0e10cSrcweir targetFolderURL != null && !targetFolderURL.equals( "" ) && 108cdf0e10cSrcweir newTitle != null && transOperation != null && !transOperation.equals( "" ) && 109cdf0e10cSrcweir ( transOperation.equals( "copy" ) || transOperation.equals( "move" ) || 110cdf0e10cSrcweir transOperation.equals( "link" ))) { 111cdf0e10cSrcweir 112cdf0e10cSrcweir ///////////////////////////////////////////////////////////////////// 113cdf0e10cSrcweir // Copy, move or create a link for a resource to another location... 114cdf0e10cSrcweir ///////////////////////////////////////////////////////////////////// 115cdf0e10cSrcweir GlobalTransferCommandArgument arg = new GlobalTransferCommandArgument(); 116cdf0e10cSrcweir if ( transOperation.equals( "copy" )) { 117cdf0e10cSrcweir arg.Operation = TransferCommandOperation.COPY; 118cdf0e10cSrcweir } else if ( transOperation.equals( "move" )) { 119cdf0e10cSrcweir arg.Operation = TransferCommandOperation.MOVE; 120cdf0e10cSrcweir } else if ( transOperation.equals( "link" )) { 121cdf0e10cSrcweir arg.Operation = TransferCommandOperation.LINK; 122cdf0e10cSrcweir } 123cdf0e10cSrcweir arg.SourceURL = sourceURL; 124cdf0e10cSrcweir arg.TargetURL = targetFolderURL; 125cdf0e10cSrcweir 126cdf0e10cSrcweir // object get a new unique name 127cdf0e10cSrcweir arg.NewTitle = newTitle; 128cdf0e10cSrcweir 129cdf0e10cSrcweir // fail, if object with same name exists in target folder 130cdf0e10cSrcweir arg.NameClash = NameClash.ERROR; 131cdf0e10cSrcweir 132cdf0e10cSrcweir // Let UCB execute the command "globalTransfer". 133cdf0e10cSrcweir m_helper.executeCommand( m_ucb, "globalTransfer", arg ); 134cdf0e10cSrcweir result = true; 135cdf0e10cSrcweir } 136cdf0e10cSrcweir return result; 137cdf0e10cSrcweir } 138cdf0e10cSrcweir 139cdf0e10cSrcweir /** 140cdf0e10cSrcweir * Get connect URL. 141cdf0e10cSrcweir * 142cdf0e10cSrcweir *@return String That contains the connect URL 143cdf0e10cSrcweir */ getContentURL()144cdf0e10cSrcweir public String getContentURL() { 145cdf0e10cSrcweir return m_contenturl; 146cdf0e10cSrcweir } 147cdf0e10cSrcweir 148cdf0e10cSrcweir /** 149cdf0e10cSrcweir * Get trasfering Operation. 150cdf0e10cSrcweir * 151cdf0e10cSrcweir *@return String That contains the trasfering Operation 152cdf0e10cSrcweir */ getTransOperation()153cdf0e10cSrcweir public String getTransOperation() { 154cdf0e10cSrcweir return m_transOperation; 155cdf0e10cSrcweir } 156cdf0e10cSrcweir 157cdf0e10cSrcweir /** 158cdf0e10cSrcweir * Get target folder URL. 159cdf0e10cSrcweir * 160cdf0e10cSrcweir *@return String That contains the target folder URL 161cdf0e10cSrcweir */ getTargetFolderURL()162cdf0e10cSrcweir public String getTargetFolderURL() { 163cdf0e10cSrcweir return m_targetFolderURL; 164cdf0e10cSrcweir } 165cdf0e10cSrcweir 166cdf0e10cSrcweir /** 167cdf0e10cSrcweir * Get new title for the resource to be transfered. 168cdf0e10cSrcweir * 169cdf0e10cSrcweir *@return String That contains a new title for the transfered 170cdf0e10cSrcweir * resource. Can be empty. In this case resource 171cdf0e10cSrcweir * will keep the title it has in the source folder. 172cdf0e10cSrcweir */ getNewTitle()173cdf0e10cSrcweir public String getNewTitle() { 174cdf0e10cSrcweir return m_newTitle; 175cdf0e10cSrcweir } 176cdf0e10cSrcweir 177cdf0e10cSrcweir /** 178cdf0e10cSrcweir * Parse arguments 179cdf0e10cSrcweir * 180cdf0e10cSrcweir *@param String[] Arguments 181cdf0e10cSrcweir *@exception java.lang.Exception 182cdf0e10cSrcweir */ parseArguments( String[] args )183cdf0e10cSrcweir public void parseArguments( String[] args ) throws java.lang.Exception { 184cdf0e10cSrcweir 185cdf0e10cSrcweir String workdir = ""; 186cdf0e10cSrcweir 187cdf0e10cSrcweir for ( int i = 0; i < args.length; i++ ) { 188cdf0e10cSrcweir if ( args[i].startsWith( "-url=" )) { 189cdf0e10cSrcweir m_contenturl = args[i].substring( 5 ); 190cdf0e10cSrcweir } else if ( args[i].startsWith( "-targetFolderURL=" )) { 191cdf0e10cSrcweir m_targetFolderURL = args[i].substring( 17 ); 192cdf0e10cSrcweir } else if ( args[i].startsWith( "-newTitle=" )) { 193cdf0e10cSrcweir m_newTitle = args[i].substring( 10 ); 194cdf0e10cSrcweir } else if ( args[i].startsWith( "-transOper=" )) { 195cdf0e10cSrcweir m_transOperation = args[i].substring( 11 ); 196cdf0e10cSrcweir } else if ( args[i].startsWith( "-workdir=" )) { 197cdf0e10cSrcweir workdir = args[i].substring( 9 ); 198cdf0e10cSrcweir } else if ( args[i].startsWith( "-help" ) || 199cdf0e10cSrcweir args[i].startsWith( "-?" )) { 200cdf0e10cSrcweir printCmdLineUsage(); 201cdf0e10cSrcweir System.exit( 0 ); 202cdf0e10cSrcweir } 203cdf0e10cSrcweir } 204cdf0e10cSrcweir 205cdf0e10cSrcweir if ( m_contenturl == null || m_contenturl.equals( "" )) { 206cdf0e10cSrcweir m_contenturl = Helper.prependCurrentDirAsAbsoluteFileURL( "data/data.txt" );; 207cdf0e10cSrcweir } 208cdf0e10cSrcweir 209cdf0e10cSrcweir if ( m_targetFolderURL == null || m_targetFolderURL.equals( "" )) { 210cdf0e10cSrcweir m_targetFolderURL = Helper.getAbsoluteFileURLFromSystemPath( workdir ); 211cdf0e10cSrcweir } 212cdf0e10cSrcweir 213cdf0e10cSrcweir if ( m_newTitle == null || m_newTitle.equals( "" )) { 214cdf0e10cSrcweir m_newTitle = "transfered-resource-" + System.currentTimeMillis(); 215cdf0e10cSrcweir } 216cdf0e10cSrcweir 217cdf0e10cSrcweir if ( m_transOperation == null || m_transOperation.equals( "" )) { 218cdf0e10cSrcweir m_transOperation = "copy"; 219cdf0e10cSrcweir } 220cdf0e10cSrcweir } 221cdf0e10cSrcweir 222cdf0e10cSrcweir /** 223cdf0e10cSrcweir * Print the commands options 224cdf0e10cSrcweir */ printCmdLineUsage()225cdf0e10cSrcweir public void printCmdLineUsage() { 226cdf0e10cSrcweir System.out.println( 227cdf0e10cSrcweir "Usage: ResourceManager -url=... -targetFolderURL=... -newTitle=... -transOper=... -workdir=..." ); 228cdf0e10cSrcweir System.out.println( 229cdf0e10cSrcweir "Defaults: -url=<currentdir>/data/data.txt> -targetFolderURL=<workdir> -newTitle=transfered-resource-<uniquepostfix> -transOper=copy -workdir=<currentdir>"); 230cdf0e10cSrcweir System.out.println( 231cdf0e10cSrcweir "\nExample : -url=file:///temp/MyFile.txt -targetFolderURL=file:///test/ -newTitle=RenamedFile.txt -transOper=copy " ); 232cdf0e10cSrcweir } 233cdf0e10cSrcweir 234cdf0e10cSrcweir /** 235cdf0e10cSrcweir * Create a new connection with the specific args to a running office and 236cdf0e10cSrcweir * copy, move or create links a resource. 237cdf0e10cSrcweir * 238cdf0e10cSrcweir *@param String[] Arguments 239cdf0e10cSrcweir */ main( String args[] )240cdf0e10cSrcweir public static void main ( String args[] ) { 241cdf0e10cSrcweir 242cdf0e10cSrcweir System.out.println( "\n" ); 243cdf0e10cSrcweir System.out.println( 244cdf0e10cSrcweir "-----------------------------------------------------------------" ); 245cdf0e10cSrcweir System.out.println( 246cdf0e10cSrcweir "ResourceManager - copies/moves a resource." ); 247cdf0e10cSrcweir System.out.println( 248cdf0e10cSrcweir "-----------------------------------------------------------------" ); 249cdf0e10cSrcweir 250cdf0e10cSrcweir try { 251cdf0e10cSrcweir ResourceManager transResource = new ResourceManager( args ); 252cdf0e10cSrcweir String sourceURL = transResource.getContentURL(); 253cdf0e10cSrcweir String targetFolderURL = transResource.getTargetFolderURL(); 254cdf0e10cSrcweir String newTitle = transResource.getNewTitle(); 255cdf0e10cSrcweir String transOperation = transResource.getTransOperation(); 256cdf0e10cSrcweir boolean result = transResource.transferResource( 257cdf0e10cSrcweir sourceURL, targetFolderURL, newTitle, transOperation ); 258cdf0e10cSrcweir if ( result ) 259cdf0e10cSrcweir System.out.println( "\nTransfering resource succeeded." ); 260cdf0e10cSrcweir else 261cdf0e10cSrcweir System.out.println( "Transfering resource failed." ); 262cdf0e10cSrcweir 263cdf0e10cSrcweir System.out.println( " Source URL : " + sourceURL ); 264cdf0e10cSrcweir System.out.println( " Target Folder URL : " + targetFolderURL ); 265cdf0e10cSrcweir System.out.println( " New name : " + newTitle ); 266cdf0e10cSrcweir System.out.println( " Transfer Operation: " + transOperation ); 267cdf0e10cSrcweir 268cdf0e10cSrcweir 269cdf0e10cSrcweir } catch ( com.sun.star.ucb.CommandAbortedException e ) { 270cdf0e10cSrcweir System.out.println( "Error: " + e ); 271cdf0e10cSrcweir } catch ( com.sun.star.uno.Exception e ) { 272cdf0e10cSrcweir System.out.println( "Error: " + e ); 273cdf0e10cSrcweir } catch ( java.lang.Exception e ) { 274cdf0e10cSrcweir System.out.println( "Error: " + e ); 275cdf0e10cSrcweir } 276cdf0e10cSrcweir System.exit( 0 ); 277cdf0e10cSrcweir } 278cdf0e10cSrcweir } 279