org.fao.geonet.kernel
Class DataManager

java.lang.Object
  extended by org.fao.geonet.kernel.DataManager

public class DataManager
extends java.lang.Object

Handles all operations on metadata (select,insert,update,delete etc...)


Constructor Summary
DataManager(SearchManager sm, AccessManager am, jeeves.resources.dbms.Dbms dbms, SettingManager ss, java.lang.String baseURL, java.lang.String htmlCacheDir)
          initializes the search manager and index not-indexed metadata
 
Method Summary
 boolean addAttribute(jeeves.resources.dbms.Dbms dbms, java.lang.String id, java.lang.String ref, java.lang.String name, java.lang.String currVersion)
           
 boolean addElement(jeeves.resources.dbms.Dbms dbms, java.lang.String id, java.lang.String ref, java.lang.String name, java.lang.String childName, java.lang.String currVersion)
          For Editing : adds an element to a metadata ([add] link)
 void addSchema(java.lang.String id, java.lang.String xmlSchemaFile, java.lang.String xmlSuggestFile, java.lang.String xmlSubstitutesFile)
           
 java.lang.String autodetectSchema(org.jdom.Element md)
           
 java.lang.String createMetadata(jeeves.resources.dbms.Dbms dbms, java.lang.String templateId, java.lang.String groupOwner, jeeves.utils.SerialFactory sf, java.lang.String source, int owner)
          Create a new metadata duplicating an existing template
 void deleteAllMetadataCateg(jeeves.resources.dbms.Dbms dbms, java.lang.String id)
          Remove all categories stored for a metadata
 boolean deleteAttribute(jeeves.resources.dbms.Dbms dbms, java.lang.String id, java.lang.String ref, java.lang.String name, java.lang.String currVersion)
          For Editing : removes an attribute from a metadata ([del] link)
 boolean deleteElement(jeeves.resources.dbms.Dbms dbms, java.lang.String id, java.lang.String ref, java.lang.String currVersion)
          For Editing : removes an element from a metadata ([del] link)
 void deleteMetadata(jeeves.resources.dbms.Dbms dbms, java.lang.String id)
          Removes a metadata
 void deleteMetadataOper(jeeves.resources.dbms.Dbms dbms, java.lang.String id, boolean skipAllIntranet)
          Remove all operations stored for a metadata
 org.jdom.Element doSchemaTronForEditor(java.lang.String schemaPath, org.jdom.Element md)
           
 java.lang.String doSchemaTronReport(java.lang.String schemaPath, org.jdom.Element md, java.lang.String id)
           
 boolean existsMetadata(jeeves.resources.dbms.Dbms dbms, java.lang.String id)
          Returns true if the metadata exists in the database
 boolean existsSchema(java.lang.String name)
           
 java.lang.String extractUUID(java.lang.String schema, org.jdom.Element md)
           
 AccessManager getAccessManager()
           
 org.jdom.Element getCategories(jeeves.resources.dbms.Dbms dbms, java.lang.String mdId)
           
 org.jdom.Element getElementByRef(org.jdom.Element md, java.lang.String ref)
          Retrieves a metadata element given it's ref
 org.jdom.Element getKeywords()
          Returns all the keywords in the system
 org.jdom.Element getMetadata(jeeves.server.context.ServiceContext srvContext, java.lang.String id, boolean forEditing)
          Retrieves a metadata (in xml) given its id; adds editing information if needed
 java.lang.String getMetadataId(jeeves.resources.dbms.Dbms dbms, java.lang.String uuid)
           
 java.lang.String getMetadataId(jeeves.server.context.ServiceContext srvContext, java.lang.String uuid)
           
 MdInfo getMetadataInfo(jeeves.resources.dbms.Dbms dbms, java.lang.String id)
           
 java.lang.String getMetadataUuid(jeeves.resources.dbms.Dbms dbms, java.lang.String id)
           
 java.lang.String getNewVersion(java.lang.String id)
           
 MetadataSchema getSchema(java.lang.String name)
           
 java.lang.String getSchemaDir(java.lang.String name)
           
 java.util.Set<java.lang.String> getSchemas()
           
 java.lang.String getSiteURL()
           
 org.jdom.Element getThumbnails(jeeves.resources.dbms.Dbms dbms, java.lang.String id)
           
 java.lang.String getVersion(java.lang.String id)
           
 void increasePopularity(jeeves.resources.dbms.Dbms dbms, java.lang.String id)
           
 void indexMetadata(jeeves.resources.dbms.Dbms dbms, java.lang.String id)
           
static void indexMetadata(jeeves.resources.dbms.Dbms dbms, java.lang.String id, SearchManager sm)
           
 java.lang.String insertMetadata(jeeves.resources.dbms.Dbms dbms, java.lang.String schema, java.lang.String groupId, org.jdom.Element xml, jeeves.utils.SerialFactory sf, java.lang.String source, java.lang.String uuid, int owner)
          Adds a metadata in xml form (the xml should be validated).
 java.lang.String insertMetadata(jeeves.resources.dbms.Dbms dbms, java.lang.String schema, java.lang.String groupOwner, org.jdom.Element xml, jeeves.utils.SerialFactory sf, java.lang.String source, java.lang.String uuid, java.lang.String isTemplate, java.lang.String title, int owner)
           
 java.lang.String insertMetadataExt(jeeves.resources.dbms.Dbms dbms, java.lang.String schema, org.jdom.Element md, int id, java.lang.String source, java.lang.String createDate, java.lang.String changeDate, java.lang.String uuid, int owner, java.lang.String groupOwner)
           
 java.lang.String insertMetadataExt(jeeves.resources.dbms.Dbms dbms, java.lang.String schema, org.jdom.Element md, jeeves.utils.SerialFactory sf, java.lang.String source, java.lang.String createDate, java.lang.String changeDate, java.lang.String uuid, int owner, java.lang.String groupOwner)
          Adds a metadata in xml form (the xml should be validated).
 boolean isCategorySet(jeeves.resources.dbms.Dbms dbms, java.lang.String mdId, java.lang.String categId)
           
 int rateMetadata(jeeves.resources.dbms.Dbms dbms, int id, java.lang.String ipAddress, int rating)
          Allow to rate a metadata
 org.jdom.Element schemaTron(java.lang.String schemaPath, org.jdom.Element md, java.lang.String id)
           
 void setCategory(jeeves.resources.dbms.Dbms dbms, java.lang.String mdId, java.lang.String categId)
          Adds a category to a metadata.
 void setHarvested(jeeves.resources.dbms.Dbms dbms, int id, java.lang.String harvestUuid)
           
 void setHarvested(jeeves.resources.dbms.Dbms dbms, int id, java.lang.String harvestUuid, java.lang.String harvestUri)
           
 void setHarvestManager(HarvestManager hm)
           
static void setNamespacePrefix(org.jdom.Element md)
           
 void setOperation(jeeves.resources.dbms.Dbms dbms, java.lang.String mdId, java.lang.String grpId, java.lang.String opId)
          Adds a permission to a group.
 void setTemplate(jeeves.resources.dbms.Dbms dbms, int id, java.lang.String isTemplate, java.lang.String title)
           
 void setThumbnail(jeeves.resources.dbms.Dbms dbms, java.lang.String id, boolean small, java.lang.String file)
           
 org.jdom.Element setUUID(java.lang.String schema, java.lang.String uuid, org.jdom.Element md)
           
 boolean swapElement(jeeves.resources.dbms.Dbms dbms, java.lang.String id, java.lang.String ref, java.lang.String currVersion, boolean down)
          For Editing : swap a tag with one of its sibling ([up] and [down] links)
 void unsetCategory(jeeves.resources.dbms.Dbms dbms, java.lang.String mdId, java.lang.String categId)
           
 void unsetOperation(jeeves.resources.dbms.Dbms dbms, int mdId, int groupId, int operId)
           
 void unsetThumbnail(jeeves.resources.dbms.Dbms dbms, java.lang.String id, boolean small)
           
 org.jdom.Element updateFixedInfo(java.lang.String schema, java.lang.String id, org.jdom.Element md, java.lang.String uuid)
           
 boolean updateMetadata(jeeves.server.UserSession session, jeeves.resources.dbms.Dbms dbms, java.lang.String id, org.jdom.Element md, boolean validate, java.lang.String version)
           
 boolean updateMetadata(jeeves.server.UserSession session, jeeves.resources.dbms.Dbms dbms, java.lang.String id, java.lang.String currVersion, java.util.Hashtable changes, boolean validate)
          For Editing : updates all leaves with new values
 void updateMetadataExt(jeeves.resources.dbms.Dbms dbms, java.lang.String id, org.jdom.Element md, java.lang.String changeDate)
           
 void validate(java.lang.String schema, org.jdom.Element md)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

DataManager

public DataManager(SearchManager sm,
                   AccessManager am,
                   jeeves.resources.dbms.Dbms dbms,
                   SettingManager ss,
                   java.lang.String baseURL,
                   java.lang.String htmlCacheDir)
            throws java.lang.Exception
initializes the search manager and index not-indexed metadata

Throws:
java.lang.Exception
Method Detail

indexMetadata

public void indexMetadata(jeeves.resources.dbms.Dbms dbms,
                          java.lang.String id)
                   throws java.lang.Exception
Throws:
java.lang.Exception

indexMetadata

public static void indexMetadata(jeeves.resources.dbms.Dbms dbms,
                                 java.lang.String id,
                                 SearchManager sm)
                          throws java.lang.Exception
Throws:
java.lang.Exception

setHarvestManager

public void setHarvestManager(HarvestManager hm)

addSchema

public void addSchema(java.lang.String id,
                      java.lang.String xmlSchemaFile,
                      java.lang.String xmlSuggestFile,
                      java.lang.String xmlSubstitutesFile)
               throws java.lang.Exception
Throws:
java.lang.Exception

getSchema

public MetadataSchema getSchema(java.lang.String name)

getSchemas

public java.util.Set<java.lang.String> getSchemas()

existsSchema

public boolean existsSchema(java.lang.String name)

getSchemaDir

public java.lang.String getSchemaDir(java.lang.String name)

validate

public void validate(java.lang.String schema,
                     org.jdom.Element md)
              throws java.lang.Exception
Throws:
java.lang.Exception

schemaTron

public org.jdom.Element schemaTron(java.lang.String schemaPath,
                                   org.jdom.Element md,
                                   java.lang.String id)
                            throws java.lang.Exception
Throws:
java.lang.Exception

doSchemaTronReport

public java.lang.String doSchemaTronReport(java.lang.String schemaPath,
                                           org.jdom.Element md,
                                           java.lang.String id)
                                    throws java.lang.Exception
Throws:
java.lang.Exception

doSchemaTronForEditor

public org.jdom.Element doSchemaTronForEditor(java.lang.String schemaPath,
                                              org.jdom.Element md)
                                       throws java.lang.Exception
Throws:
java.lang.Exception

getAccessManager

public AccessManager getAccessManager()

extractUUID

public java.lang.String extractUUID(java.lang.String schema,
                                    org.jdom.Element md)
                             throws java.lang.Exception
Throws:
java.lang.Exception

setUUID

public org.jdom.Element setUUID(java.lang.String schema,
                                java.lang.String uuid,
                                org.jdom.Element md)
                         throws java.lang.Exception
Throws:
java.lang.Exception

getMetadataId

public java.lang.String getMetadataId(jeeves.resources.dbms.Dbms dbms,
                                      java.lang.String uuid)
                               throws java.lang.Exception
Throws:
java.lang.Exception

getMetadataId

public java.lang.String getMetadataId(jeeves.server.context.ServiceContext srvContext,
                                      java.lang.String uuid)
                               throws java.lang.Exception
Throws:
java.lang.Exception

getMetadataUuid

public java.lang.String getMetadataUuid(jeeves.resources.dbms.Dbms dbms,
                                        java.lang.String id)
                                 throws java.lang.Exception
Throws:
java.lang.Exception

getMetadataInfo

public MdInfo getMetadataInfo(jeeves.resources.dbms.Dbms dbms,
                              java.lang.String id)
                       throws java.lang.Exception
Throws:
java.lang.Exception

getVersion

public java.lang.String getVersion(java.lang.String id)

getNewVersion

public java.lang.String getNewVersion(java.lang.String id)

setTemplate

public void setTemplate(jeeves.resources.dbms.Dbms dbms,
                        int id,
                        java.lang.String isTemplate,
                        java.lang.String title)
                 throws java.lang.Exception
Throws:
java.lang.Exception

setHarvested

public void setHarvested(jeeves.resources.dbms.Dbms dbms,
                         int id,
                         java.lang.String harvestUuid)
                  throws java.lang.Exception
Throws:
java.lang.Exception

setHarvested

public void setHarvested(jeeves.resources.dbms.Dbms dbms,
                         int id,
                         java.lang.String harvestUuid,
                         java.lang.String harvestUri)
                  throws java.lang.Exception
Throws:
java.lang.Exception

getSiteURL

public java.lang.String getSiteURL()

autodetectSchema

public java.lang.String autodetectSchema(org.jdom.Element md)

increasePopularity

public void increasePopularity(jeeves.resources.dbms.Dbms dbms,
                               java.lang.String id)
                        throws java.lang.Exception
Throws:
java.lang.Exception

rateMetadata

public int rateMetadata(jeeves.resources.dbms.Dbms dbms,
                        int id,
                        java.lang.String ipAddress,
                        int rating)
                 throws java.lang.Exception
Allow to rate a metadata

Parameters:
ipAddress - IP address of the submitting client
rating - range should be 1..5
Throws:
java.lang.Exception

createMetadata

public java.lang.String createMetadata(jeeves.resources.dbms.Dbms dbms,
                                       java.lang.String templateId,
                                       java.lang.String groupOwner,
                                       jeeves.utils.SerialFactory sf,
                                       java.lang.String source,
                                       int owner)
                                throws java.lang.Exception
Create a new metadata duplicating an existing template

Throws:
java.lang.Exception

insertMetadataExt

public java.lang.String insertMetadataExt(jeeves.resources.dbms.Dbms dbms,
                                          java.lang.String schema,
                                          org.jdom.Element md,
                                          jeeves.utils.SerialFactory sf,
                                          java.lang.String source,
                                          java.lang.String createDate,
                                          java.lang.String changeDate,
                                          java.lang.String uuid,
                                          int owner,
                                          java.lang.String groupOwner)
                                   throws java.lang.Exception
Adds a metadata in xml form (the xml should be validated). This method is used to add a metadata got from a remote site. Note that neighter permissions nor lucene indexes are updated.

Throws:
java.lang.Exception

insertMetadataExt

public java.lang.String insertMetadataExt(jeeves.resources.dbms.Dbms dbms,
                                          java.lang.String schema,
                                          org.jdom.Element md,
                                          int id,
                                          java.lang.String source,
                                          java.lang.String createDate,
                                          java.lang.String changeDate,
                                          java.lang.String uuid,
                                          int owner,
                                          java.lang.String groupOwner)
                                   throws java.lang.Exception
Parameters:
source - the source of the metadata. If null, the local siteId will be used
Throws:
java.lang.Exception

insertMetadata

public java.lang.String insertMetadata(jeeves.resources.dbms.Dbms dbms,
                                       java.lang.String schema,
                                       java.lang.String groupId,
                                       org.jdom.Element xml,
                                       jeeves.utils.SerialFactory sf,
                                       java.lang.String source,
                                       java.lang.String uuid,
                                       int owner)
                                throws java.lang.Exception
Adds a metadata in xml form (the xml should be validated). The group id is used to setup permissions. Internal metadata fields are updated. Default operations are set.

Throws:
java.lang.Exception

insertMetadata

public java.lang.String insertMetadata(jeeves.resources.dbms.Dbms dbms,
                                       java.lang.String schema,
                                       java.lang.String groupOwner,
                                       org.jdom.Element xml,
                                       jeeves.utils.SerialFactory sf,
                                       java.lang.String source,
                                       java.lang.String uuid,
                                       java.lang.String isTemplate,
                                       java.lang.String title,
                                       int owner)
                                throws java.lang.Exception
Throws:
java.lang.Exception

getMetadata

public org.jdom.Element getMetadata(jeeves.server.context.ServiceContext srvContext,
                                    java.lang.String id,
                                    boolean forEditing)
                             throws java.lang.Exception
Retrieves a metadata (in xml) given its id; adds editing information if needed

Throws:
java.lang.Exception

getElementByRef

public org.jdom.Element getElementByRef(org.jdom.Element md,
                                        java.lang.String ref)
Retrieves a metadata element given it's ref


existsMetadata

public boolean existsMetadata(jeeves.resources.dbms.Dbms dbms,
                              java.lang.String id)
                       throws java.lang.Exception
Returns true if the metadata exists in the database

Throws:
java.lang.Exception

getKeywords

public org.jdom.Element getKeywords()
                             throws java.lang.Exception
Returns all the keywords in the system

Throws:
java.lang.Exception

addElement

public boolean addElement(jeeves.resources.dbms.Dbms dbms,
                          java.lang.String id,
                          java.lang.String ref,
                          java.lang.String name,
                          java.lang.String childName,
                          java.lang.String currVersion)
                   throws java.lang.Exception
For Editing : adds an element to a metadata ([add] link)

Throws:
java.lang.Exception

addAttribute

public boolean addAttribute(jeeves.resources.dbms.Dbms dbms,
                            java.lang.String id,
                            java.lang.String ref,
                            java.lang.String name,
                            java.lang.String currVersion)
                     throws java.lang.Exception
Throws:
java.lang.Exception

deleteElement

public boolean deleteElement(jeeves.resources.dbms.Dbms dbms,
                             java.lang.String id,
                             java.lang.String ref,
                             java.lang.String currVersion)
                      throws java.lang.Exception
For Editing : removes an element from a metadata ([del] link)

Throws:
java.lang.Exception

deleteAttribute

public boolean deleteAttribute(jeeves.resources.dbms.Dbms dbms,
                               java.lang.String id,
                               java.lang.String ref,
                               java.lang.String name,
                               java.lang.String currVersion)
                        throws java.lang.Exception
For Editing : removes an attribute from a metadata ([del] link)

Throws:
java.lang.Exception

swapElement

public boolean swapElement(jeeves.resources.dbms.Dbms dbms,
                           java.lang.String id,
                           java.lang.String ref,
                           java.lang.String currVersion,
                           boolean down)
                    throws java.lang.Exception
For Editing : swap a tag with one of its sibling ([up] and [down] links)

Throws:
java.lang.Exception

updateMetadata

public boolean updateMetadata(jeeves.server.UserSession session,
                              jeeves.resources.dbms.Dbms dbms,
                              java.lang.String id,
                              java.lang.String currVersion,
                              java.util.Hashtable changes,
                              boolean validate)
                       throws java.lang.Exception
For Editing : updates all leaves with new values

Throws:
java.lang.Exception

updateMetadata

public boolean updateMetadata(jeeves.server.UserSession session,
                              jeeves.resources.dbms.Dbms dbms,
                              java.lang.String id,
                              org.jdom.Element md,
                              boolean validate,
                              java.lang.String version)
                       throws java.lang.Exception
Throws:
java.lang.Exception

updateMetadataExt

public void updateMetadataExt(jeeves.resources.dbms.Dbms dbms,
                              java.lang.String id,
                              org.jdom.Element md,
                              java.lang.String changeDate)
                       throws java.lang.Exception
Throws:
java.lang.Exception

deleteMetadata

public void deleteMetadata(jeeves.resources.dbms.Dbms dbms,
                           java.lang.String id)
                    throws java.lang.Exception
Removes a metadata

Throws:
java.lang.Exception

deleteMetadataOper

public void deleteMetadataOper(jeeves.resources.dbms.Dbms dbms,
                               java.lang.String id,
                               boolean skipAllIntranet)
                        throws java.lang.Exception
Remove all operations stored for a metadata

Throws:
java.lang.Exception

deleteAllMetadataCateg

public void deleteAllMetadataCateg(jeeves.resources.dbms.Dbms dbms,
                                   java.lang.String id)
                            throws java.lang.Exception
Remove all categories stored for a metadata

Throws:
java.lang.Exception

getThumbnails

public org.jdom.Element getThumbnails(jeeves.resources.dbms.Dbms dbms,
                                      java.lang.String id)
                               throws java.lang.Exception
Throws:
java.lang.Exception

setThumbnail

public void setThumbnail(jeeves.resources.dbms.Dbms dbms,
                         java.lang.String id,
                         boolean small,
                         java.lang.String file)
                  throws java.lang.Exception
Throws:
java.lang.Exception

unsetThumbnail

public void unsetThumbnail(jeeves.resources.dbms.Dbms dbms,
                           java.lang.String id,
                           boolean small)
                    throws java.lang.Exception
Throws:
java.lang.Exception

setOperation

public void setOperation(jeeves.resources.dbms.Dbms dbms,
                         java.lang.String mdId,
                         java.lang.String grpId,
                         java.lang.String opId)
                  throws java.lang.Exception
Adds a permission to a group. Metadata is not reindexed

Throws:
java.lang.Exception

unsetOperation

public void unsetOperation(jeeves.resources.dbms.Dbms dbms,
                           int mdId,
                           int groupId,
                           int operId)
                    throws java.lang.Exception
Throws:
java.lang.Exception

setCategory

public void setCategory(jeeves.resources.dbms.Dbms dbms,
                        java.lang.String mdId,
                        java.lang.String categId)
                 throws java.lang.Exception
Adds a category to a metadata. Metadata is not reindexed

Throws:
java.lang.Exception

isCategorySet

public boolean isCategorySet(jeeves.resources.dbms.Dbms dbms,
                             java.lang.String mdId,
                             java.lang.String categId)
                      throws java.lang.Exception
Throws:
java.lang.Exception

unsetCategory

public void unsetCategory(jeeves.resources.dbms.Dbms dbms,
                          java.lang.String mdId,
                          java.lang.String categId)
                   throws java.lang.Exception
Throws:
java.lang.Exception

getCategories

public org.jdom.Element getCategories(jeeves.resources.dbms.Dbms dbms,
                                      java.lang.String mdId)
                               throws java.lang.Exception
Throws:
java.lang.Exception

updateFixedInfo

public org.jdom.Element updateFixedInfo(java.lang.String schema,
                                        java.lang.String id,
                                        org.jdom.Element md,
                                        java.lang.String uuid)
                                 throws java.lang.Exception
Throws:
java.lang.Exception

setNamespacePrefix

public static void setNamespacePrefix(org.jdom.Element md)