DFS recuperare l'r_object_id di un nuovo oggetto e Set Date

14 views
Skip to first unread message

.:: Luca ::.

unread,
Jan 3, 2011, 8:50:55 AM1/3/11
to documentum italian user group
Ciao a tutti,
sono alle prese con la scrittura di un Custom Service attraverso DFS,
in cui ho la necessità di recuperare l'r_object_id di un oggetto
appena creato con il metodo "create" di IObjectService.
Premetto che tutta la procedura per la creazione va a buon fine. Ma
non riesco a recuperare l'r_object_id dell'oggetto creato.
Pensavo bastasse, partendo dal dataObject appena creato (come su
indicato)eseguire quanto segue:

String id = dataObject.getIdentity().getValueAsString();

ma non è così, infatti id restituito è sempre null.

Inolte sarei grato a chi mi illuminasse nel setting di un'attributo di
tipo Time.
Ho provato ad eseguire :

properties.set("data_riferimento", "03/01/2010 10:10:10");

senza risultato positivo.

Ho notato che il set con valore

properties.set("data_riferimento", new Date());

funziona correttamente, da qui l'idea di passare alla funzione set, un
tipo Date creato dalla data indicata, ma senza successo. Io devo
"settare" una data che non è la data in cui viene creato l-oggettosu
documentum ma [ una data custom.
Ho provato anche con DateProperty(java.lang.String name,
java.util.Date value), ma forse non eseguo correttamente la
valorizzazione.
Ringraziandovi anticipatamente, vi faccio i miei migliori auguri di
inizio anno.
Saluti Luca.

Yuri

unread,
Jan 3, 2011, 8:58:44 AM1/3/11
to documentum italian user group
Ciao Luca.
Controlla la porzione di codice riportata di seguito che permette di
ottenere quello che chiedi (...) attrsToReturn.add("r_object_id)).
Fammi sapere se questo risponde alla tua richiesta.
Saluti,
Yuri
---------------------------------
public static DataObject createObject(IServiceContext context, String
name, String type, String fldId, Map<String, String> attrs, byte[]
content, String contentType) {
ObjectIdentity objId = new ObjectIdentity(REPO_NAME);
DataObject dataObj = new DataObject(objId, type);
dataObj.getProperties().set(ATTR_NAME, name);
if( attrs != null ) {
for( String key : attrs.keySet()) {
dataObj.getProperties().set(key, attrs.get(key));
}
}
ObjectIdentity folder = null;
if( fldId == null || fldId.length() == 0) {
folder = new ObjectIdentity<ObjectPath>(new ObjectPath(IMS_PATH),
REPO_NAME);
}
else {
folder = new ObjectIdentity<ObjectId>(new ObjectId(fldId),
REPO_NAME);
}
ReferenceRelationship rel = new ReferenceRelationship(
folder,
Relationship.RELATIONSHIP_FOLDER,
Relationship.ROLE_PARENT);
dataObj.getRelationships().add(rel);
if( content != null ) {
dataObj.getContents().add(new BinaryContent(content, contentType));
}
DataPackage dataPack = new DataPackage(dataObj);
PropertyProfile propProf = new
PropertyProfile(PropertyFilterMode.SPECIFIED_BY_INCLUDE);
List<String> attrsToReturn = new Vector<String>();
attrsToReturn.add("r_object_id);
propProf.setIncludeProperties(attrsToReturn);
OperationOptions opts = new OperationOptions();
opts.setPropertyProfile(propProf);
try {
ServiceFactory fact = ServiceFactory.getInstance();
IObjectService serv = fact.getRemoteService(IObjectService.class,
context, DFS_CORE, DFS_URL);
serv.create(dataPack, null);
}
catch(ServiceException e) {
throw new RuntimeException(e);
}
return dataObj

.:: Luca ::.

unread,
Jan 3, 2011, 11:08:25 AM1/3/11
to documentum italian user group
Grazie Yuri,
ho trovato con una soluzione AllInOne.
Posto qui la mia soluzione, magari torna utile ad altri:

objectService.create(dataPackage,
operationOptions).getDataObjects().get(0).getIdentity().getValueAsString();

Ora rimane lo "scoglio" del set date custom :(

Ciao Luca

Riccardo Magnani

unread,
Jan 3, 2011, 2:16:12 PM1/3/11
to .:: Luca ::., di...@googlegroups.com
Ciao Luca,
per la data prova questo:

Calendar calendario = Calendar.getInstance();
calendario.set(2010, 0, 2, 12, 12, 13);
Date data = calendario.getTime();
Property r_access_date = new DateProperty("r_access_date", data);
properties.set(r_access_date);

Al posto di r_access_date potresti mettere un field date custom.

Fammi sapere.
Un saluto,
Riccardo

>>> in cui ho la necessit� di recuperare l'r_object_id di un oggetto


>>> appena creato con il metodo "create" di IObjectService.
>>> Premetto che tutta la procedura per la creazione va a buon fine. Ma
>>> non riesco a recuperare l'r_object_id dell'oggetto creato.
>>> Pensavo bastasse, partendo dal dataObject appena creato (come su
>>> indicato)eseguire quanto segue:
>>> String id = dataObject.getIdentity().getValueAsString();

>>> ma non � cos�, infatti id restituito � sempre null.


>>> Inolte sarei grato a chi mi illuminasse nel setting di un'attributo di
>>> tipo Time.
>>> Ho provato ad eseguire :
>>> properties.set("data_riferimento", "03/01/2010 10:10:10");
>>> senza risultato positivo.
>>> Ho notato che il set con valore
>>> properties.set("data_riferimento", new Date());
>>> funziona correttamente, da qui l'idea di passare alla funzione set, un
>>> tipo Date creato dalla data indicata, ma senza successo. Io devo

>>> "settare" una data che non � la data in cui viene creato l-oggettosu

Reply all
Reply to author
Forward
0 new messages