/* See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* Esri Inc. licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.esri.gpt.catalog.management;
import com.esri.gpt.catalog.harvest.repository.HrRecord.HarvestFrequency;
import com.esri.gpt.catalog.harvest.repository.HrRecord.RecentJobStatus;
import com.esri.gpt.control.webharvest.IterationContext;
import com.esri.gpt.control.webharvest.protocol.Protocol;
import com.esri.gpt.framework.context.ApplicationContext;
import com.esri.gpt.framework.request.Record;
import com.esri.gpt.framework.resource.query.QueryBuilder;
import com.esri.gpt.framework.util.UuidUtil;
import com.esri.gpt.framework.util.Val;
import java.sql.Timestamp;
import java.util.LinkedHashMap;
import java.util.Map;
/**
* Represents a metadata record associated with a manage metadata request.
*/
public class MmdRecord extends Record {
// class variables =============================================================
// instance variables ==========================================================
private String _approvalStatus = "";
private String _approvalStatusMsg = "";
private boolean _canEdit = false;
private String _collectionMembership = "";
private String _formattedUpdateDate = "";
private String _ownerName = "";
private String _publicationMethod;
private String _publicationMethodMsg = "";
private Timestamp _systemUpdateDate = null;
private String _title = "";
private String _uuid = "";
private String _siteUuid = "";
private String _metadataAccessPolicyType = "";
private String _currentMetadataAccessPolicy = "";
private String _currentMetadataAccessPolicyKeys = "";
// resource specific attributes
private int _localId;
private String _hostUrl = "";
private Protocol _protocol;
private HarvestFrequency _harvestFrequency;
private boolean _sendNotification;
private Timestamp _lastHarvestDate;
private RecentJobStatus _recentJobStatus;
/** findable */
private boolean findable;
/** searchable */
private boolean searchable;
/** synchronizable */
private boolean synchronizable;
private Map<String, Object> _objectMap = new LinkedHashMap<String, Object>();
// constructors ================================================================
/** Default constructor. */
public MmdRecord() {
super();
}
// properties ==================================================================
/**
* Gets the object map.
*
* @return the object map (never null)
*/
public Map<String, Object> getObjectMap() {
if(_objectMap == null) {
_objectMap = new LinkedHashMap<String, Object>();
}
return _objectMap;
}
/**
* Gets the approval status.
* @return the approval status
*/
public String getApprovalStatus() {
return _approvalStatus;
}
/**
* Sets the approval status.
* @param status the approval status
*/
public void setApprovalStatus(String status) {
_approvalStatus = MmdEnums.ApprovalStatus.checkValue(status).toString();
}
/**
* Gets the approval status resource bundle message.
* @return the approval status message
*/
public String getApprovalStatusMsg() {
return _approvalStatusMsg;
}
/**
* Sets the approval status resource bundle message.
* @param msg the approval status message
*/
public void setApprovalStatusMsg(String msg) {
_approvalStatusMsg = Val.chkStr(msg);
}
/**
* Gets the editable status for the document.
* @return true if the document can be edited
*/
public boolean getCanEdit() {
return _canEdit;
}
/**
* Sets the editable status for the document.
* @param canEdit true if the document can be edited
*/
protected void setCanEdit(boolean canEdit) {
_canEdit = canEdit;
}
/**
* Gets the collection membership string.
* @return the collection membership
*/
public String getCollectionMembership() {
return _collectionMembership;
}
/**
* Sets the collection membership string.
* @param membership the collection membership
*/
public void setCollectionMembership(String membership) {
_collectionMembership = Val.chkStr(membership);
}
/**
* Gets the formatted update date.
* @return the formatted update date
*/
public String getFormattedUpdateDate() {
return _formattedUpdateDate;
}
/**
* Sets the formatted update date.
* @param date the formatted update date
*/
public void setFormattedUpdateDate(String date) {
_formattedUpdateDate = Val.chkStr(date);
}
/**
* Gets the document owner name (username).
* @return the document owner name
*/
public String getOwnerName() {
return _ownerName;
}
/**
* Sets the document owner name (username).
* @param name the document owner name
*/
public void setOwnerName(String name) {
_ownerName = Val.chkStr(name);
}
/**
* Gets the publication method.
* @return the publication method
*/
public String getPublicationMethod() {
return _publicationMethod;
}
/**
* Sets the publication method.
* @param method the publication method
*/
public void setPublicationMethod(String method) {
_publicationMethod = MmdEnums.PublicationMethod.checkValue(method).toString();
}
/**
* Gets the publication method resource bundle message.
* @return the publication method message
*/
public String getPublicationMethodMsg() {
return _publicationMethodMsg;
}
/**
* Sets the publication method resource bundle message.
* @param msg the publication method message
*/
public void setPublicationMethodMsg(String msg) {
_publicationMethodMsg = Val.chkStr(msg);
}
/**
* Gets the system update date.
* @return the system update date
*/
public Timestamp getSystemUpdateDate() {
return _systemUpdateDate;
}
/**
* Sets the system update date.
* @param date the system update date
*/
public void setSystemUpdateDate(Timestamp date) {
_systemUpdateDate = date;
}
/**
* Gets the title.
* @return the title
*/
public String getTitle() {
return _title;
}
/**
* Sets the title.
* @param title the title
*/
public void setTitle(String title) {
_title = Val.chkStr(title);
}
/**
* Gets the document UUID.
* @return the UUID
*/
public String getUuid() {
return _uuid;
}
/**
* Sets the document UUID.
* @param uuid the UUID
*/
public void setUuid(String uuid) {
_uuid = UuidUtil.addCurlies(uuid);
}
/**
* Gets the site UUID.
* @return the site UUID
*/
public String getSiteUuid() {
return _siteUuid;
}
/**
* Sets the site UUID.
* @param uuid site UUID
*/
public void setSiteUuid(String uuid) {
_siteUuid = UuidUtil.addCurlies(uuid);
}
/**
* Gets the document Metadata Access policy type.
* @return access policy type type
*/
public String getMetadataAccessPolicyType() {
return _metadataAccessPolicyType;
}
/**
* Sets the document Metadata Access policy type.
* @param metadataAccessPolicyType access policy type
*/
public void setMetadataAccessPolicyType(String metadataAccessPolicyType) {
this._metadataAccessPolicyType = metadataAccessPolicyType;
}
/**
* Gets the document current access policy.
* @return access policy
*/
public String getCurrentMetadataAccessPolicy() {
return _currentMetadataAccessPolicy;
}
/**
* Sets the document current access policy.
* @param currentMetadataAccessPolicy access policy
*/
public void setCurrentMetadataAccessPolicy(String currentMetadataAccessPolicy) {
this._currentMetadataAccessPolicy = currentMetadataAccessPolicy;
}
/**
* Gets the document current access policy.
* @return access policy keys
*/
public String getCurrentMetadataAccessPolicyKeys() {
return _currentMetadataAccessPolicyKeys;
}
/**
* Sets the document current access policy.
* @param currentMetadataAccessPolicyKeys access policy keys
*/
public void setCurrentMetadataAccessPolicyKeys(String currentMetadataAccessPolicyKeys) {
this._currentMetadataAccessPolicyKeys = currentMetadataAccessPolicyKeys;
}
/**
* Gets local id.
* @return local id
*/
public int getLocalId() {
return _localId;
}
/**
* Sets local id.
* @param localId local id
*/
public void setLocalId(int localId) {
this._localId = localId;
}
/**
* Gets host URL.
* @return host URL
*/
public String getHostUrl() {
return _hostUrl;
}
/**
* Sets host URL.
* @param hostUrl host URL
*/
public void setHostUrl(String hostUrl) {
this._hostUrl = Val.chkStr(hostUrl);
}
/**
* Gets protocol.
* @return protocol
*/
public Protocol getProtocol() {
return _protocol;
}
/**
* Sets protocol.
* @param harvestProtocol protocol
*/
public void setProtocol(Protocol harvestProtocol) {
this._protocol = harvestProtocol;
}
/**
* Gets harvest frequency.
* @return harvest frequency
*/
public HarvestFrequency getHarvestFrequency() {
return _harvestFrequency;
}
/**
* Sets harvest frequency.
* @param harvestFrequency harvest frequency
*/
public void setHarvestFrequency(HarvestFrequency harvestFrequency) {
this._harvestFrequency = harvestFrequency;
}
/**
* Gets flag to check if send harvest notification.
* @return flag to check if send harvest notification
*/
public boolean getSendNotification() {
return _sendNotification;
}
/**
* Sets flag to check if send harvest notification.
* @param sendNotification flag to check if send harvest notification
*/
public void setSendNotification(boolean sendNotification) {
this._sendNotification = sendNotification;
}
/**
* Gets last harvest date.
* @return last harvest date
*/
public Timestamp getLastHarvestDate() {
return _lastHarvestDate;
}
/**
* Sets last harvest date.
* @param lastHarvestDate last harvest date
*/
public void setLastHarvestDate(Timestamp lastHarvestDate) {
this._lastHarvestDate = lastHarvestDate;
}
/**
* Gets recent job status.
* @return recent job status
*/
public RecentJobStatus getRecentJobStatus() {
return _recentJobStatus;
}
/**
* Checks if synchronization of this resource is being executed locally.
* @return <code>true</code> if synchronization of this resource is being executed locally
*/
public boolean isExecutingLocally() {
return ApplicationContext.getInstance().getHarvestingEngine().isExecutingLocally(getUuid());
}
/**
* Sets recent job status.
* @param _recentJobStatus recent job status
*/
public void setRecentJobStatus(RecentJobStatus _recentJobStatus) {
this._recentJobStatus = _recentJobStatus;
}
public String getName() {
return getTitle();
}
/**
* Checks if record is findable.
* @return <code>true</code> if record is findable
*/
public boolean getFindable() {
return findable;
}
/**
* Sets record is findable.
* @param findable <code>true</code> to make record is findable
*/
public void setFindable(boolean findable) {
this.findable = findable;
}
/**
* Checks if records is synchronizable.
* @return <code>true</code> if records is synchronizable
*/
public boolean getSynchronizable() {
return synchronizable;
}
/**
* Sets records is synchronizable.
* @param synchronizable <code>true</code> to make records is synchronizable
*/
public void setSynchronizable(boolean synchronizable) {
this.synchronizable = synchronizable;
}
/**
* Checks if records is searchable.
* @return <code>true</code> if records is searchable
*/
public boolean getSearchable() {
return searchable;
}
/**
* Sets records is searchable.
* @param searchable <ocde>true</code> to make records is searchable
*/
public void setSearchable(boolean searchable) {
this.searchable = searchable;
}
/**
* Creates new query builder.
* @param iterationContext iteration context (can be <code>null</code>)
* @return query builder or <code>null</code> if no protocol
*/
public QueryBuilder newQueryBuilder(IterationContext iterationContext) {
if (iterationContext==null) {
iterationContext = new IterationContext() {
public void onIterationException(Exception ex) {
}
};
}
return getProtocol()!=null? getProtocol().newQueryBuilder(iterationContext, getHostUrl()): null;
}
// methods =====================================================================
}