/**
* ESUP-Portail Helpdesk - Copyright (c) 2004-2009 ESUP-Portail consortium.
*/
package org.esupportail.helpdesk.services.indexing;
import org.esupportail.helpdesk.domain.beans.ArchivedTicket;
import org.esupportail.helpdesk.domain.beans.Faq;
import org.esupportail.helpdesk.domain.beans.Ticket;
/**
* A basic implementation of IndexIdProvider.
*/
public class IndexIdProviderImpl implements IndexIdProvider {
/**
* The serialization id.
*/
private static final long serialVersionUID = -7959513700027842403L;
/**
* The prefix used to index tickets.
*/
private static final String TICKET_INDEX_PREFIX = "t";
/**
* The prefix used to index FAQ.
*/
private static final String FAQ_INDEX_PREFIX = "f";
/**
* The prefix used to index archived tickets.
*/
private static final String ARCHIVED_TICKET_INDEX_PREFIX = "a";
/**
* Bean constructor.
*/
public IndexIdProviderImpl() {
super();
}
/**
* @see org.esupportail.helpdesk.services.indexing.IndexIdProvider#getIndexId(
* org.esupportail.helpdesk.domain.beans.Ticket)
*/
@Override
public String getIndexId(final Ticket ticket) {
return TICKET_INDEX_PREFIX + ticket.getId();
}
/**
* @see org.esupportail.helpdesk.services.indexing.IndexIdProvider#getIndexId(
* org.esupportail.helpdesk.domain.beans.Faq)
*/
@Override
public String getIndexId(final Faq faq) {
return FAQ_INDEX_PREFIX + faq.getId();
}
/**
* @see org.esupportail.helpdesk.services.indexing.IndexIdProvider#getIndexId(
* org.esupportail.helpdesk.domain.beans.ArchivedTicket)
*/
@Override
public String getIndexId(final ArchivedTicket archivedTicket) {
return ARCHIVED_TICKET_INDEX_PREFIX + archivedTicket.getId();
}
/**
* @param indexId
* @param prefix
* @return true if the index starts with a given prefix, corresponding to a class.
*/
protected boolean isObjectIndexId(
final String indexId,
final String prefix) {
if (indexId == null) {
throw new IndexException("null index id");
}
return indexId.startsWith(prefix);
}
/**
* @see org.esupportail.helpdesk.services.indexing.IndexIdProvider#isTicketIndexId(java.lang.String)
*/
@Override
public boolean isTicketIndexId(final String indexId) {
return isObjectIndexId(indexId, TICKET_INDEX_PREFIX);
}
/**
* @see org.esupportail.helpdesk.services.indexing.IndexIdProvider#isFaqIndexId(java.lang.String)
*/
@Override
public boolean isFaqIndexId(final String indexId) {
return isObjectIndexId(indexId, FAQ_INDEX_PREFIX);
}
/**
* @see org.esupportail.helpdesk.services.indexing.IndexIdProvider#isArchivedTicketIndexId(java.lang.String)
*/
@Override
public boolean isArchivedTicketIndexId(final String indexId) {
return isObjectIndexId(indexId, ARCHIVED_TICKET_INDEX_PREFIX);
}
/**
* @param indexId
* @return the id of the object that corresponds to an index id or null of not well-formed.
*/
protected long getObjectIndexId(
final String indexId) {
try {
return Long.valueOf(indexId.substring(1));
} catch (NumberFormatException e) {
throw new IndexException("ill-formed index id [" + indexId + "]");
}
}
/**
* @see org.esupportail.helpdesk.services.indexing.IndexIdProvider#getTicketIndexId(java.lang.String)
*/
@Override
public long getTicketIndexId(final String indexId) {
return getObjectIndexId(indexId);
}
/**
* @see org.esupportail.helpdesk.services.indexing.IndexIdProvider#getFaqIndexId(java.lang.String)
*/
@Override
public long getFaqIndexId(final String indexId) {
return getObjectIndexId(indexId);
}
/**
* @see org.esupportail.helpdesk.services.indexing.IndexIdProvider#getArchivedTicketIndexId(java.lang.String)
*/
@Override
public long getArchivedTicketIndexId(final String indexId) {
return getObjectIndexId(indexId);
}
}