/** * Busca un documento o directorio en Alfresco * * @param space Referencia al espacio donde se buscara el elemento, si es null se buscará en * /app:company_home (Raiz del repositorio de alfresco) * @param contentName Nombre del Contenido o directorio en Alfresco * @return Referencia al directorio o contenido, null si no se encuentra */ public static Reference getContentReference(Reference space, String contentName) { // Se obtiene la referencia al directorio padre Reference parentReference; if (space != null) parentReference = ReferenceToParent(space); else parentReference = getCompanyHome(); QueryResult queryResult = null; try { queryResult = WebServiceFactory.getRepositoryService().queryChildren(parentReference); } catch (Exception ex) { LOGGER.log( Level.SEVERE, "Error: no se puede acceder al espacio " + parentReference.getPath()); return null; } ResultSet resultSet = queryResult.getResultSet(); if (resultSet.getTotalRowCount() > 0) { // LOGGER.log(Level.INFO, "Encontradas {" + resultSet.getTotalRowCount() + "} referencias a " // + contentName + "} en {" + space.getPath() + "}"); ResultSetRow[] rows = resultSet.getRows(); // Recorriendo for (int x = 0; x < rows.length; x++) { ResultSetRowNode node = rows[x].getNode(); Reference ref1 = new Reference(STOREREF, node.getId(), null); Query query = null; Node[] noderesult = null; try { noderesult = WebServiceFactory.getRepositoryService() .get(new Predicate(new Reference[] {ref1}, STOREREF, query)); if (noderesult != null) { for (Node rowi : noderesult) { NamedValue[] columns1 = rowi.getProperties(); for (int y1 = 0; y1 < columns1.length; y1++) { if (rowi.getProperties(y1).getName().endsWith(Constants.PROP_NAME)) { if (rowi.getProperties(y1).getValue().equals(contentName)) { return rowi.getReference(); } } } } } } catch (Exception ex1) { LOGGER.log(Level.INFO, "No hay referencias al nodo {" + contentName + "}"); } } } else { LOGGER.log( Level.SEVERE, "Error: Encontradas {" + resultSet.getTotalRowCount() + "} referencias a {" + contentName + "} en {" + parentReference.getPath() + "} (No hay una única referencia al nodo)"); } return null; }
/** * {@inheritDoc} * * @see org.prowim.dms.alfresco.ContentService#findFolderOrContent(String) */ @Override @Interceptors(AuthenticationInterceptor.class) public String findFolderOrContent(String contentName) { Validate.notNull(contentName, "The name of content or a folder can not be null"); String idReference = null; RepositoryServiceSoapBindingStub repoService = WebServiceFactory.getRepositoryService(); try { QueryResult results = repoService.queryChildren( new Reference(DMSStoreRegistry.STORE_REF, DMSConstants.getCustomerFolderID(), null)); ResultSetRow[] rows = results.getResultSet().getRows(); ResultSetRow currentRow; NamedValue[] colums; String currentName; String currentValue; if (rows != null) { for (int i = 0; i < rows.length; i++) { currentRow = rows[i]; colums = currentRow.getColumns(); for (int y = 0; y < colums.length; y++) { currentName = colums[y].getName(); if (currentName.equals(Constants.PROP_NAME)) { currentValue = colums[y].getValue(); if (currentValue.equals(contentName)) { idReference = currentRow.getNode().getId(); } } } } } } catch (RepositoryFault e) { LOG.error("RepositoryFault-Error by search a item in DMS", e); } catch (RemoteException e) { LOG.error("RemoteException-Error by search a item in DMS", e); } return idReference; }