Showing posts with label Content Engine API. Show all posts
Showing posts with label Content Engine API. Show all posts

Wednesday 11 May 2016

Java Sample for Retrieving collections of individual classes meta data and individual properties meta data (FileNet Content Engine API)

// Java Sample for Retrieving collections of individual classes meta data and individual properties meta data (FileNet Content Engine API)

public void FetchPropClassDesc(Connection conn) {

try {
Domain domain = Factory.Domain.fetchInstance(conn, null, null);
ObjectStore objStore = Factory.ObjectStore.fetchInstance(domain,"OSNAME", null);


/*
ClassDescription Are collections of metadata that describe individual classes
Provide access to PropertyDescriptionobjects associated with class 
Return default permission for an object of a particular class
Determine if versioning is enabled for a particular Document class
Assign a document lifecycle policy to a document class or subclassRetrieve
*/

ClassDescriptionSet classDescriptions= objStore.get_ClassDescriptions();
ClassDescription classDesc;
Iterator it = classDescriptions.iterator();
while (it.hasNext()) 
{
classDesc= (ClassDescription)it.next();
System.out.println("Class name = " + classDesc.get_DisplayName());

}

PropertyFilter pf= new PropertyFilter();
pf.addIncludeType(0, null, null, FilteredPropertyType.ANY,1);
Document document=Factory.Document.fetchInstance(objStore, new Id("{08CA2852-111B-4E5D-B032-DBG2A653B4FD}"), pf);
String documentName= document.get_Name();
System.out.println(documentName+ " Document has been retrieved");


com.filenet.api.meta.ClassDescription classDescription= document.get_ClassDescription();
/*
Are collections of metadata that describe individual properties
Are contained in the ClassDescriptionPropertyDescriptionsproperty
Provide information on how the property needs to be represented to the user
Contain information such as choice lists 
Each instance of a PropertyDescription object describes a specific property for a single class
*/

PropertyDescriptionList propDescs= classDescription.get_PropertyDescriptions();
PropertyDescription propDesc; 
Iterator propIt= propDescs.iterator();
while (propIt.hasNext()) 
{
propDesc=(PropertyDescription)propIt.next();

System.out.println("Property name = " +propDesc.get_SymbolicName()); 
//get_SymbolicName(): A String thatrepresents the programmatic identifier for this PropertyDescription

System.out.println("Read only? " + propDesc.get_IsReadOnly().toString()); 
//get_IsReadOnly(): A Boolean value that indicates whether or not you can modify the value of the property. If true, the property value can be changed only by the server

System.out.println("Value of Property" + propDesc.get_Settability()); 
//get_Settability(): A constant that indicates when the value of a property can be setRetrieve (READ_ONLY-3, READ_WRITE-0, SETTABLE_ONLY_BEFORE_CHECKIN-1, SETTABLE_ONLY_ON_CREATE)

System.out.println("Is Value Required ? "+propDesc.get_IsValueRequired()); 
//get_IsValueRequired(): A Boolean value that indicates whether the property is required to have a value (true) or not (false)

System.out.println("Cardinality = " + propDesc.get_Cardinality()); 
//get_Cardinality() :A constant that indicates the cardinality of the PropertyDescription (ENUM-1, LIST-2, SINGLE-0)

System.out.println(""+propDesc.get_IsSystemGenerated());
/*get_IsSystemGenerated(): A Boolean value that indicates whether the property has its value set automatically by the Content Engine server (true) or not (false). 
If the value is true, the described property does one of the following:
Provides system information
Has its value determined by the server
*/

}

} catch (Exception e) {
e.printStackTrace();
}
}

Tuesday 10 May 2016

Retrieving all documents and objects in Folder (FileNet CE API)

//Retrieving all documents and objects in Folder (FileNet CE API)

public void FetchCEObjectsInFolder(Connection conn) {  //FileNet CE Connection 

try {
Domain domain = Factory.Domain.fetchInstance(conn, null, null);
ObjectStore objStore = Factory.ObjectStore.fetchInstance(domain,"OSNAME", null);
System.out.println("Object Store ="+ objStore.get_DisplayName() );

String folder= "/Test"; // Folder name

com.filenet.api.core.Folder folderOj= Factory.Folder.fetchInstance(objStore,folder, null);
System.out.println("del"+folderOj.get_Name());

DocumentSet documents = folderOj.get_ContainedDocuments(); //For documents

ReferentialContainmentRelationshipSet refConRelSet= folderOj.get_Containees(); // for objects
Iterator it = documents.iterator(); 
while(it.hasNext())
{

//Retrieving documents
Document retrieveDoc= (Document)it.next();
String name = retrieveDoc.get_Name();
System.out.println("Document Name :: "+ name);

//Retrieving Objects
ReferentialContainmentRelationship retrieveObj=(ReferentialContainmentRelationship)it.next();
IndependentObject containee=retrieveObj.get_Head();
String className= containee.getClassName();
String displayName= retrieveObj.get_Name(); 
System.out.println("Class Name = "+ className);
System.out.println("Display Name = "+ displayName);
}
} catch (Exception e) {
e.printStackTrace();
}
}

Deleting Sub Folders and Root Folder in CE

//Deleting Sub Folders and Root Folder in CE

public void deleteCEFolder(Connection conn) {  //FileNet CE Connection

try {
Domain domain = Factory.Domain.fetchInstance(conn, null, null);
ObjectStore objStore = Factory.ObjectStore.fetchInstance(domain,"OSNAME", null);
System.out.println("Object Store ="+ objStore.get_DisplayName() );

String folder= "/NewFolder";

com.filenet.api.core.Folder folderOj= Factory.Folder.fetchInstance(objStore,folder, null);
System.out.println("del"+folderOj.get_Name());

FolderSet subFolders= folderOj.get_SubFolders();
Iterator it = subFolders.iterator();
while(it.hasNext()){

com.filenet.api.core.Folder subFolder= (com.filenet.api.core.Folder) it.next();

String name = ((com.filenet.api.core.Folder) subFolder).get_FolderName();
System.out.println("Subfolder = "+name);

//1. First Delete sub folders
subFolder.delete();
subFolder.save(RefreshMode.NO_REFRESH);
System.out.println("Subfolder = "+name+" is Deleted");
}


  //2. Delete Root folder

folderOj.delete();
folderOj.save(RefreshMode.REFRESH);
System.out.println("Root Folder "+folderOj + "is Deleted");

} catch (Exception e) {
e.printStackTrace();
}
}

Fetching folders and sub folders in CE

//Fetching folders and sub folders in CE

public void FetchCEFolder(Connection conn) {     //FileNet CE Connection 

try {
Domain domain = Factory.Domain.fetchInstance(conn, null, null);
ObjectStore objStore = Factory.ObjectStore.fetchInstance(domain,"OSNAME", null);
System.out.println("Object Store ="+ objStore.get_DisplayName() );

String folder= "/NewFolder";

// Fetching Parent folder
com.filenet.api.core.Folder folderOj= Factory.Folder.fetchInstance(objStore,folder, null);
System.out.println("del"+folderOj.get_Name());

//Fetching sub folders 
FolderSet subFolders= folderOj.get_SubFolders(); 
Iterator it = subFolders.iterator();
while(it.hasNext()){
com.filenet.api.core.Folder subFolder= (com.filenet.api.core.Folder) it.next(); 
String name = ((com.filenet.api.core.Folder) subFolder).get_FolderName();
System.out.println("Subfolder = "+name);

// Fetching hidden folders
if(subFolder.getProperties().getBooleanValue("IsHiddenContainer"))
System.out.println("Folder "+ name + "is hidden");

}

} catch (Exception e) {
e.printStackTrace();
}
}

Creating folder and sub folder in CE (CE API)

// Creating folder and sub folder in CE (CE API)

public void createCEFolder(Connection conn) {    //FileNet CE Connection 

try {
//fetching Domain
Domain domain = Factory.Domain.fetchInstance(conn, null, null);
//fetching Object Store
ObjectStore objStore = Factory.ObjectStore.fetchInstance(domain,"OSNAME", null);
System.out.println("Object Store ="+ objStore.get_DisplayName() );

//Creating Root folder 
com.filenet.api.core.Folder testFolder= Factory.Folder.createInstance(objStore,null);
com.filenet.api.core.Folder rootFolder= objStore.get_RootFolder(); 
System.out.println(rootFolder);
testFolder.set_Parent(rootFolder);
testFolder.set_FolderName("NewFolder"); //Folder Name
testFolder.save(RefreshMode.REFRESH);

//Creating Sub folder
com.filenet.api.core.Folder subFolder= testFolder.createSubFolder("newSubFolder");
subFolder.save(RefreshMode.REFRESH);

} catch (Exception e) {
e.printStackTrace();
}
}

Retrieve all Object stores in CE


// Retrieve all Object stores in CE

public void FetchOSList(Connection conn) {   //FileNet CE Connection

try {

Domain domain = Factory.Domain.fetchInstance(conn, null, null);
ObjectStoreSet osSet= domain.get_ObjectStores();
ObjectStore store;
Iterator iterator = osSet.iterator();
Iterator<ObjectStore> osIter = iterator;
while (osIter.hasNext()) {
store = (ObjectStore)osIter.next();
 
if((store.getAccessAllowed().intValue() & AccessLevel.USE_OBJECT_STORE.getValue())>0)
System.out.println(store.get_Name());
 
}

} catch (Exception e) {
e.printStackTrace();
}
}

Friday 11 March 2016

Fetch(or Filter) Meta Data(of Document) from Content Engine and write into CSV file

//Fetch(or Filter) Meta Data(of Document) from Content Engine  and write into CSV file

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Date;
import java.util.Iterator;
import javax.security.auth.Subject;
import com.csvreader.CsvWriter;
import com.filenet.api.collection.IndependentObjectSet;
import com.filenet.api.core.Connection;
import com.filenet.api.core.Document;
import com.filenet.api.core.Domain;
import com.filenet.api.core.Factory;
import com.filenet.api.core.ObjectStore;
import com.filenet.api.property.Properties;
import com.filenet.api.query.SearchSQL;
import com.filenet.api.query.SearchScope;
import com.filenet.api.util.UserContext;

public class CSVReportFromCEDoc{
private static Connection conn = null;
    public static Connection getCEConnection()
    {
        try {
            String ceURI = "http://localhst:9080/wsi/FNCEWS40MTOM/"; //FileNet URL
            String userName ="p8admin"; //User Name
            String password ="filenet"; //Password
            if(conn==null){
            conn = Factory.Connection.getConnection(ceURI); //CE connection
            Subject subject = UserContext.createSubject(conn, userName, password, null); //creating subject
            UserContext uc = UserContext.get(); 
            uc.pushSubject(subject); //push subject
            }

        } catch (Exception e1) {
            e1.printStackTrace();
        }
        System.out.println("CE Connection"+conn);
        return conn;
    }
    public static void getInternalQADocuments() throws IOException{
        String osName="RAKESHOS"; //Object Store name
        try{
            Connection conn = getCEConnection();
            Domain domain = Factory.Domain.fetchInstance(conn,null, null); //fetching domain
            ObjectStore objStore = Factory.ObjectStore.fetchInstance(domain, osName,null); //fetching object store
            SearchScope searchScope = new SearchScope(objStore); // Creating search scope object
            int count=1;
            String sqlStr = "Select * FROM DocClass"; //CE Query
            SearchSQL searchSQL = new SearchSQL(sqlStr);
            System.out.println("Query ::"+sqlStr);
            //fetching Data from Content Engine
            IndependentObjectSet independentObjectSet = searchScope.fetchObjects(searchSQL, new Integer(10), null, new Boolean(true)); 
           
            File file = new File("E:\\Report.csv"); 

            if ( !file.exists() ){
                file.createNewFile();
            }
            // Use FileWriter constructor that specifies open for appending
            CsvWriter csvOutput = new CsvWriter(new FileWriter(file, true), ',');
            //Create Header for CSV
            csvOutput.write("Title");
            csvOutput.write("Doc Type");
            csvOutput.write("Country");
            csvOutput.write("State");
            csvOutput.write("Street");
            csvOutput.write("House No");
            csvOutput.write("Added On");
            csvOutput.write("Modified On");
             csvOutput.endRecord();
            
            String Title=null;
            String DocType=null;
            Date DateCreated=null;
            Date DateLastModified=null;
            String State=null;
            String Country=null;
            String Street=null;
            String HouseNo=null;
            if(!(independentObjectSet.isEmpty())){
                Iterator it=independentObjectSet.iterator();
                while(it.hasNext())    {
                    Document doc=(Document)it.next();
                   
                    //fetching properties from each document
                    Properties documentProperties = doc.getProperties();
                     Title=doc.getProperties().getStringValue("DocumentTitle");
                     System.out.println("Title:::"+Title);
                     DocType=documentProperties.getStringValue("DocType");
                     DateCreated=documentProperties.getDateTimeValue("DateCreated");
                     DateLastModified=documentProperties.getDateTimeValue("DateLastModified");
                     State=documentProperties.getStringValue("State");
                     Country=documentProperties.getStringValue("Country");
                     Street=documentProperties.getStringValue("Street");
                     HouseNo=documentProperties.getStringValue("HouseNo");
                   
                     //inserting into CSV file
                     csvOutput.write(Title);
                     csvOutput.write(DocType);
                     csvOutput.write(Country);
                     csvOutput.write(State);
                     csvOutput.write(Street);
                     csvOutput.write(HouseNo);
                     csvOutput.write(DateCreated.toString());
                     csvOutput.write(DateLastModified.toString());
                     csvOutput.endRecord();
                     count++; 
                     System.out.println("Count:::;"+count);
                    }
                }
            }
        catch(Exception e){
            e.printStackTrace();
        }
    }
    public static void main(String[] args) throws IOException {
        getInternalQADocuments();
    }
}

Thursday 12 February 2015

Create a Document with Content (CE API)

Create a Document with Content (CE API)
-----------------------------------------------------------

//Get CE Connetcion
//Create Subject
//Push Subject

//Get Domain (domain)
ObjectStore os = null;
objectStoreName = "COS"
os = Factory.ObjectStore.fetchInstance(domain, objectStoreName, null); 


 //Get Folder
 Folder folder=null;
 folderName = ''/Sample";
folder=Factory.Folder.fetchInstance(os, folderName, null); 


 //Get the File details
InputStream file = "";
String fileName = "";
int fileSize = "";
 
// Create Document

String docClass = "dcumnet class name";
Document doc = Factory.Document.createInstance(os, docClass); 
if (file != null && fileSize > 0) {
                        ContentTransfer contentTransfer = Factory.ContentTransfer.createInstance();
                        contentTransfer.setCaptureSource(file);
                        contentElementList.add(contentTransfer);
                        doc.set_ContentElements(contentElementList);
                        contentTransfer.set_RetrievalName(fileName);                       
                        doc.set_MimeType(getMimetype(fileName));
                    }
                   


//Check-in the doc
doc.checkin(AutoClassify.DO_NOT_AUTO_CLASSIFY,CheckinType.MAJOR_VERSION);                   
//Get and put the doc properties
String documentName =""
Properties p = doc.getProperties();
p.putValue("DocumentTitle","abcd");
p.putValue("Name","Rakesh");
p.putValue("Number","01234"); 

              

doc.save(RefreshMode.REFRESH);

//Stores above content to the folder

 ReferentialContainmentRelationship rc = folder.file(doc,
                                    AutoUniqueName.AUTO_UNIQUE,
                                    documentName,
                                    DefineSecurityParentage.DO_NOT_DEFINE_SECURITY_PARENTAGE);

 rc.save(RefreshMode.REFRESH);




 

Tuesday 10 February 2015

Search CE Object using SearchSQL (Content Engine API)

Search CE Object

  Note* : first fetch the Object Store 
 

 public ArrayList getCEObjects(String filterParams, String[] resultParams, String ObjectClassName, boolean includeSubClass)
  {
    log.debug("ENTRY ");
    String searchClassScope = includeSubClass ? "INCLUDESUBCLASSES" : "EXCLUDESUBCLASSES";
    String searchQuery = "";

    for (int i = 0; i < resultParams.length; i++) {
      if (i == 0)
        searchQuery = resultParams[i];
      else {
        searchQuery = searchQuery + "," + resultParams[i];
      }
    }
    String searchQ = "SELECT " + searchQuery + " FROM " + ObjectClassName + " WITH " +
      searchClassScope + " WHERE " + filterParams;

    log.debug("CE Search Query " + searchQ);
    SearchSQL sqlObject = new SearchSQL(searchQ);
    SearchScope searchScope = new SearchScope(this.objectStore);

    IndependentObjectSet objectSet = searchScope.fetchObjects(sqlObject, null, null, new Boolean(true));
    Iterator iter = objectSet.iterator();

    ArrayList coList = new ArrayList();
    while (iter.hasNext())
    {
      Hashtable htResult = new Hashtable();
      CustomObject customObject = (CustomObject)iter.next();
      coList.add(customObject);
    }
    if ((coList.size() != 0) && (coList != null))
    {
      log.info(coList.size() + " Custom Objects fetched ");
    }
    log.debug("EXIT");
    return coList;
  }




Tuesday 18 November 2014

Build URL of Document in FileNet (Content Engine API)

//Build URL of Document in FileNet (Content Engine API)



//The below code generates the URL of Document. The URL works on same Browser where you run the code else it asks Credentials

public void opendoc() throws IOException
    {
        String baseP8URL = "http://localhost:9080/WorkplaceXT/";
        String user = //User Name
        String password = //Password
        //String objectStore = //Object Store Name
        String docID = //GUID of Document
        //Get Connection
        //Get Domain
        objectStore = //Get Object Store
        com.filenet.api.core.Document doc=com.filenet.api.core.Factory.Document.fetchInstance(objectStore, docID, null);
        String vsId = doc.get_VersionSeries().get_Id().toString();
       
        // Call WorkplaceXT’s setCredentials servlet to obtain user token
        try {
       
        URL url = new URL(baseP8URL +
        "setCredentials?op=getUserToken&userId="
        + user + "&password=" + password + "&verify=true");
        HttpURLConnection p8con =
        (HttpURLConnection) url.openConnection();
        p8con.setRequestMethod("POST");
        p8con.connect();
        InputStream in = p8con.getInputStream();
        int c = -1;
        String tempUserToken = "";
        while ( (c=in.read()) >= 0) tempUserToken +=
        new Character((char)c).toString();
                String userToken = URLEncoder.encode(tempUserToken, "UTF-8");
                System.out.println("the user token "+userToken);
                String strURL = baseP8URL + "getContent?objectStoreName="
                + "Target" + "&vsId=" + vsId + "&objectType=document&ut=" //
                + userToken + "&impersonate=true";
        System.out.println("ssss"+ strURL);
        }
        catch (Exception e )
        {
            e.printStackTrace();
        }
               
    }

View Content (Attachment) in FileNet Document (Content Engine API)

//View Content (Attachment) in FileNet Document (Content Engine API)


        ceConnection = //Get Connection
        domain = //Get Domain
        objectStore = //Get Object Store
       
        InputStream inputStream=null;
        try
        {
        FileInputStream is=null;
       
        System.out.println("inside fetchdoc Filenet----------------------------");
        ArrayList[] ars=new ArrayList[2];
        SearchScope search=new SearchScope(objectStore);
       
        String sql1= "Select * from [DocClass_Test] where ([DocumentTitle]= '"+DocTitle+"')";
        SearchSQL searchSQL=new SearchSQL(sql1);
        DocumentSet documents=(DocumentSet)search.fetchObjects(searchSQL, Integer.getInteger("50"), null, Boolean.valueOf(true));
        Document doc;
        Iterator it=documents.iterator();
       
        System.out.println("calling FileInputStream");
        while(it.hasNext())
        {
            doc=(Document)it.next();
            ContentElementList contents = doc.get_ContentElements();
              ContentTransfer ct;
              Iterator itContent = contents.iterator();
              while(itContent.hasNext()) {
                  ct = (ContentTransfer)itContent.next();
              inputStream = ct.accessContentStream();
              int bufferLength = 64*1024; // buffer size (64KB)
                byte[] buffer = new byte[bufferLength];
                int read=0;
              
                DataOutputStream out = new DataOutputStream(response.getOutputStream());
                System.out.println("calling while-- check");
                while((read=inputStream.read(buffer))!=-1)
                {
                    out.write(buffer,0,read);                 
                }
               
                out.close();
   
        }     
        }
        }
        catch(Exception e)
        {
            e.printStackTrace();
        }

Friday 14 November 2014

Get and Put properties on Document(CE API)

//Put Multiple Properties on multiple Documents

                ObjectStore objectstore =//Get Object Store
                logger.info("Object Store Name :: "+objectstore.get_DisplayName());
                SearchScope search=new SearchScope(objectstore);
                String value = "abcd"
                String sql1= "Select * from DocumentClass where DocumentTitle = "+value;
                SearchSQL searchSQL=new SearchSQL(sql1);
                DocumentSet documents=(DocumentSet)search.fetchObjects(searchSQL, Integer.getInteger("50"), null, Boolean.valueOf(true));
                Document doc;
                Iterator it=documents.iterator();
                while(it.hasNext())
                {
                    doc=(Document)it.next();
                    doc.getProperties().putValue("Name", abc);
                    doc.getProperties().putValue("number", 123);
                    doc.getProperties().putValue("Salary", 200);
                    doc.save(RefreshMode.REFRESH);

                }


//

Searching and Deleting documents(CE API)

//Searching and Deleting documents(CE API)

             SearchScope search=new SearchScope(objectstore);
                String value = abc;
                String sql1= "Select * from DocClass where DocumentTitle = "+ Value;
                SearchSQL searchSQL=new SearchSQL(sql1);
                DocumentSet documents=(DocumentSet)search.fetchObjects(searchSQL, Integer.getInteger("50"), null, Boolean.valueOf(true));
                Document doc;
                Iterator it=documents.iterator();
                while(it.hasNext())
                {
                    doc=(Document)it.next();
                    logger.info("document name::"+doc.get_Name());
                    logger.info("deleting the document now:::");
                    doc.delete();
                    doc.save(RefreshMode.REFRESH);
                   
                }

Thursday 13 November 2014

Content Engine JAVA API

Content Engine API's

// Get Connection

    public Connection getCEConnectionHTTP() {
        try{
        String UserName = "p8admin";
        String Password = "p8admin";
        String Url = "http://localhost:9080/wsi/FNCEWS40MTOM/";
        String Stanza = "FileNetP8WSI";
        connection = Factory.Connection.getConnection(Url);
        System.out.println("Connection is established");
        subject = UserContext.createSubject(connection, UserName, Password, Stanza);
        UserContext uc = UserContext.get();
        uc.pushSubject(subject);
        return connection;
        }
        catch (EngineRuntimeException engineRuntimeException) {
            System.out.println("RuntimeException occured while getting the connection = "+ engineRuntimeException.getMessage());
                           
            engineRuntimeException.printStackTrace();
        }
        return connection;
    }


//Get Domain


public Domain getFileNetDomain()
    {
        String domainName = "P8DEVAirtelAfrica";
        Domain domain = null;
        try
        {
        domain = Factory.Domain.fetchInstance(getCEConnectionHTTP(), domainName, null);
        }
        catch (EngineRuntimeException engineRuntimeException) {
            System.out.println("RuntimeException occured while getting the Domain = "+ engineRuntimeException.getMessage());
                           
            engineRuntimeException.printStackTrace();
        }
        return domain;
    }


// Get Object Store

public ObjectStore getObjectStore(Domain domain, String objectStoreName) {
        ObjectStore os = null;
        try {
//            domain = null;
            os = Factory.ObjectStore.fetchInstance(domain, objectStoreName, null);
            System.out.println("ObjectStor Details " + os.get_DisplayName());
        } catch (EngineRuntimeException ere) {
            System.out.println("getObjectStore :" + ere.getExceptionCode().getKey());
            ere.printStackTrace();
        }
        return os;
    }