import java.beans.PropertyVetoException; import java.io.*; import java.util.*; import wt.content.*; import wt.doc.*; import wt.enterprise.RevisionControlled; import wt.fc.*; import wt.folder.CabinetBased; import wt.folder.FolderHelper; import wt.query.*; import wt.util.WTException; import wt.vc.*; import wt.lifecycle.*; import wt.query.*; import wt.project.*; import wt.util.SortedEnumeration; import wt.util.*; import wt.team.*; import java.sql.Timestamp; import wt.method.*; public class GetContents implements RemoteAccess { private static void extractContent( WTDocument wtDoc, String outputDir ) { try { String errorMessage = ""; wt.content.ContentHolder syHold = null; syHold = (wt.doc.WTDocument)wt.content.ContentHelper.service.getContents(((wt.content.ContentHolder)wtDoc)); //java.util.Vector vectorOfAppData = wt.content.ContentHelper.getApplicationData((wt.content.ContentHolder)syHold); java.util.Vector vectorOfAppData = wt.content.ContentHelper.getContentListAll( syHold ); if( vectorOfAppData != null) { java.util.Iterator appIter = vectorOfAppData.iterator(); while (appIter.hasNext()) { wt.content.ApplicationData syAppData = (wt.content.ApplicationData)(appIter.next()); String docName = syAppData.getFileName(); //For Richard - C 5084116 long fileSize = syAppData.getFileSize(); Sytem.out.println("FileSize is: " + fileSize); // Create the fully qualified path name for content file that will be saved to the Windchill server for FTP to the UG Object Adapter String syContentFileName = outputDir + ((outputDir.endsWith("\\")) ? docName : "\\" + docName); // Save the content file to disk on the Windchill server wt.content.ContentServerHelper.service.writeContentStream(syAppData, syContentFileName); } } else { errorMessage = "--> This primary business object has no primary content file. No file extracted."; System.out.println("errorMessage"); } } catch (Exception e) { System.out.println("--> WTException"); e.printStackTrace(); } } public static void getWTDocument(String number, String outputDir) { WTDocument myDoc = null; try { myDoc = new WTDocument(); QuerySpec qs = new QuerySpec( WTDocument.class ); qs.appendWhere( new SearchCondition(WTDocument.class, "master>number", SearchCondition.EQUAL, number ) ); qs.appendAnd(); qs.appendWhere( new SearchCondition(WTDocument.class, "iterationInfo.latest", SearchCondition.IS_TRUE ) ); qs.appendOrderBy( new OrderBy( new ClassAttribute(WTDocument.class, "iterationInfo.branchId" ), true ), 0 ); System.out.println( "Now Querying for Doc Using: " + qs.toString() ); QueryResult qr = PersistenceHelper.manager.find( qs ); while( qr.hasMoreElements() ) { myDoc = (WTDocument)qr.nextElement(); } System.out.println( "Found: " + myDoc.getName() ); extractContent( myDoc, outputDir ); } catch( Exception e ) { e.printStackTrace(); } } public static void main( String[] args ) { if (args.length < 2) { System.out.println ("Usage: windchill GetContents "); System.exit(0); } else { try { RemoteMethodServer rms = RemoteMethodServer.getDefault(); //This is so that it does not prompt for the user login rms.setUserName("wcadmin"); rms.setPassword("wcadmin"); Class[] rmiArgTypes = new Class [2]; rmiArgTypes[0] = java.lang.String.class; rmiArgTypes[1] = java.lang.String.class; String[] rmiArgs = new String[2]; rmiArgs[0] = args[0]; rmiArgs[1] = args[1]; rms.invoke("getWTDocument", "GetContents", null, rmiArgTypes, rmiArgs); System.exit(0); } catch(Exception e) { e.printStackTrace(); } } } }