package ext; import java.io.*; import java.util.*; import java.net.URL; import java.util.Locale; import java.rmi.RemoteException; import java.beans.PropertyVetoException; import wt.util.*; import wt.fc.*; import wt.vc.*; import wt.query.*; import wt.part.*; import wt.epm.*; import wt.httpgw.GatewayAuthenticator; import wt.method.RemoteMethodServer; import wt.lifecycle.*; import wt.htmlutil.HtmlUtil; import wt.iba.value.DefaultAttributeContainer; import wt.iba.value.IBAHolder; import wt.iba.value.IBAValueUtility; import wt.iba.value.service.IBAValueHelper; import wt.iba.value.service.IBAValueService; import wt.iba.value.litevalue.*; import wt.iba.definition.AttributeDefinitionDataType; import wt.iba.definition.litedefinition.*; import wt.iba.definition.service.*; import com.ptc.core.meta.server.IBAModel; import com.ptc.core.meta.common.AttributeIdentifier; import com.ptc.core.meta.common.impl.InstanceBasedAttributeIdentifier; import com.ptc.core.meta.common.impl.InstanceBasedAttributeTypeIdentifier; import com.ptc.core.meta.type.mgmt.common.TypeDefinitionDefaultView; public class attrList { public static Enumeration FindEpmNumbered( String dlLoc, String drwNo ) throws WTException, WTPropertyVetoException { QuerySpec qs = new QuerySpec(EPMDocument.class); qs.appendWhere(new SearchCondition(EPMDocument.class,EPMDocument.NUMBER,SearchCondition.LIKE,drwNo)); qs.appendAnd(); qs.appendWhere(new SearchCondition(EPMDocument.class, "iterationInfo.latest", "TRUE")); final QueryResult qr = PersistenceHelper.manager.find(qs); while (qr.hasMoreElements()) { EPMDocument epmm = (EPMDocument)qr.nextElement(); LifeCycleManaged LMObject = (LifeCycleManaged)epmm; String StStg = (String)LMObject.getLifeCycleState().toString(); System.out.println( "\n========================================\n"+ "EPMDoc - Number: " + epmm.getNumber() + " - Name: " + epmm.getName()+ " - CadName: " + epmm.getCADName() ); System.out.println( "-Version: " + epmm.getVersionIdentifier().getValue() + " - Iteration:"+epmm.getIterationIdentifier().getValue()+" - Life Cycle State: "+StStg+"\n"); String newNM = epmm.getNumber()+".dat"; String filePath = dlLoc+"\\"+newNM; System.out.println( "File Path: "+ filePath+"\n"); String tstStg = getIBA_EPM_Attr(epmm); try { File file = new File(filePath); Writer writer = new BufferedWriter(new FileWriter(file)); writer.write(tstStg); writer.flush(); writer.close(); } catch(IOException eIO){ eIO.printStackTrace(); } queCnt++; } return new Enumeration() { public boolean hasMoreElements() { return qr.hasMoreElements(); } public Object nextElement() throws NoSuchElementException { return ((Persistable[])qr.nextElement()); } }; } public static String getIBA_EPM_Attr(EPMDocument doc){ try{ Locale locale = Locale.getDefault(); AbstractValueView[] avv = null; AbstractValueView aabstractvalueview[]; aabstractvalueview = null; IBAHolder ibah = (IBAHolder)doc; IBAHolder ibaHolder=IBAValueHelper.service.refreshAttributeContainer((IBAHolder)ibah, null, null, null); DefaultAttributeContainer dac=(DefaultAttributeContainer)ibaHolder.getAttributeContainer(); if(dac != null) { int j = 0; avv = dac.getAttributeValues(); Vector avvVec = new Vector(); for(int i = 0; i < avv.length; i++) avvVec.addElement(avv[i]); Enumeration e = avvVec.elements(); AbstractValueViewCollationKeyFactory avvckf = new AbstractValueViewCollationKeyFactory(locale); SortedEnumeration se = new SortedEnumeration(e, avvckf); avv = new AbstractValueView[se.size()]; while(se.hasMoreElements()) { avv[j] = (AbstractValueView)se.nextElement(); j++; } } String txtTot=""; for (int i = 0; i < avv.length; i++) { String val = IBAValueUtility.getLocalizedIBAValueDisplayString(avv[i], null); AttributeDefDefaultView attrDef = avv[i].getDefinition(); String nestedAttrName = attrDef.getName(); txtTot=txtTot+nestedAttrName+":"+val+"\r\n"; System.out.println(nestedAttrName+":"+val); } return txtTot; } catch(WTException ew){ ew.printStackTrace(); } catch (RemoteException er){ er.printStackTrace(); } catch (ArrayIndexOutOfBoundsException ea){ ea.printStackTrace(); } return "None"; } public static void main(String[] args) { RemoteMethodServer rms = RemoteMethodServer.getDefault(); GatewayAuthenticator auth = new GatewayAuthenticator(); auth.setRemoteUser("wcadmin"); rms.setAuthenticator(auth); try { if ( args.length < 2 ) { System.out.println("Usage: windchill attrList "); System.exit(0); } else { String dlLoc = args[0]; String drwNo = args[1]; Enumeration e = FindEpmNumbered(dlLoc, drwNo); while (e.hasMoreElements()) { System.out.println(((EPMDocument)e.nextElement()).getIdentity()); } System.out.println(queCnt+" Objects Queried."); System.exit(0); } } catch (WTException wtee) { wtee.printStackTrace(); } catch (WTPropertyVetoException wtpe) { wtpe.printStackTrace(); } finally { System.exit(0); } } static int queCnt=0; }