All pastes #395188 Raw Edit

Someone

public text v1 · immutable
·published 2007-03-14 21:14 UTC
rendered paste body
        // Search for assets with subject subjects
        // Acquire handles to managers
        AssetManager assetManager = Connector.getAssetManager();
		SubjectManager subjectManager = Connector.getSubjectManager();
		Searcher searcher = Connector.getSearcher();
        
        // Initialize parameters for EMS calls
        Map metadata = new HashMap();
        Collection metadataTemplateList = new ArrayList();
        String assetVersionUuid;
        
        // Create some asset placeholders
        assetVersionUuid = assetManager.createAsset(m_userAuth,
                                                    AssetType.IMAGE,
                                                    "Test Asset Placeholder",
                                                    "JUnit created Asset with no file.",
                                                    m_userAuth.getOrgUuid(),
                                                    metadataTemplateList,
                                                    metadata);
        cleanupAssetUuids.add(assetVersionUuid);
	    // First we create a subject tree. Here we use the form of createSubject that
	    // lets us also create a term at the same time we create the subject.

	    SubjectInfo rootSubject = subjectManager.getRootSubject(m_rootAuth, m_acmeCorpUuid);

	    String productsUuid = subjectManager.createSubject(m_rootAuth,
	                                                       "product-subj", // subject 'code'
	                                                       "Products",     // term name
	                                                       Language.US_ENGLISH.getLocale(), // language of term
	                                                       SubjectTermType.AUTHORITATIVE_TERM, // term type
	                                                       null, // domain -- null means the default domain
	                                                       m_acmeCorpUuid); // the subject owner
	    subjectManager.addChild(m_rootAuth, rootSubject.getUuid(), productsUuid);

	    String industrialProductsUuid = subjectManager.createSubject(m_rootAuth,
	                                                                 "indust-product-subj", "Industrial Products",
	                                                                 Language.US_ENGLISH.getLocale(),
	                                                                 SubjectTermType.AUTHORITATIVE_TERM, null, m_acmeCorpUuid);
	    
	    subjectManager.addChild(m_rootAuth, productsUuid, industrialProductsUuid);

	    String consumerProductsUuid = subjectManager.createSubject(m_rootAuth,
	                                                              "consumer-product-subj", "Consumer Products",
	                                                              Language.US_ENGLISH.getLocale(),
	                                                              SubjectTermType.AUTHORITATIVE_TERM, null, m_acmeCorpUuid);
	    
	    subjectManager.addChild(m_rootAuth, productsUuid, consumerProductsUuid);


	    String tricorderUuid = subjectManager.createSubject(m_rootAuth,
	                                                        "tc-thx1138-subj", "Tricorder Model THX1138",
	                                                        Language.US_ENGLISH.getLocale(),
	                                                        SubjectTermType.AUTHORITATIVE_TERM, null, m_acmeCorpUuid);
	    
	    subjectManager.addChild(m_rootAuth, consumerProductsUuid, tricorderUuid);

	      /* Now there's a subject hierarchy like this:
	       *
	       *                     Root
	       *                      |
	       *                    Products
	       *                   /        \
	       *              Industrial   Consumer
	       *                              |
	       *                           Tricorder Model THX1138
	       */

	    // Associate our asset with the Tricoder subject
	    subjectManager.applySubjectToObjects(m_userAuth, tricorderUuid, Collections.singletonList(assetVersionUuid));

        // Now search for asset versions with the the Tricorder subject -- we'll get back our asset version.

	    //Create new Multi result specifier
	    Query query = new Query( ObjectType.ASSET );

	    // We want the asset name and the asset version UUID
	    query.addReturnAttribute("name");
	    query.addReturnAttribute("version.uuid");

	    //Add the condition that the asset version must be associated with tricorder subject
	    query.addCondition("subjects.uuid", Query.Operators.EQUALS, tricorderUuid);

	    // If you know the subjectId of the Subject object (its primary key), you
	    // can use it rather than the subject's UUID. This will elimate an additional
	    // join in the search query and subsequently increase performance:
	    //      query.addCondition("subjects.subjectId", Query.Operators.EQUALS, subjectId);

	    // Execute the search
	    QueryResult subjectQueryResult = searcher.search(m_userAuth, query);

	    System.out.println("number of items found: "+subjectQueryResult.getResultCount());
	    Iterator iter = subjectQueryResult.rowIterator();
	    while (iter.hasNext()) {
	        Object fields[] = (Object[])iter.next();
	        System.err.println("subject query result: "+(String)fields[0]); // this will print out the asset name
	    }