package edu.asu.spring.quadriga.service.dictionary;
import java.util.List;
import org.codehaus.jettison.json.JSONException;
import edu.asu.spring.quadriga.domain.dictionary.IDictionary;
import edu.asu.spring.quadriga.domain.dictionary.IDictionaryCollaborator;
import edu.asu.spring.quadriga.domain.dictionary.IDictionaryItems;
import edu.asu.spring.quadriga.domain.impl.WordpowerReply.DictionaryEntry;
import edu.asu.spring.quadriga.domain.impl.dictionary.Item;
import edu.asu.spring.quadriga.exceptions.QuadrigaAccessException;
import edu.asu.spring.quadriga.exceptions.QuadrigaStorageException;
/**
* Interface that has methods to be implemented on the DictionaryManager class
*
* @author Lohith Dwaraka
*
*/
public interface IDictionaryManager {
/**
* Get dictionary list manager
*
* @param sUserId
* @return
* @throws QuadrigaStorageException
*/
public abstract List<IDictionary> getDictionariesList(String sUserId) throws QuadrigaStorageException;
/**
* Adding a new item to a dictionary
*
* @param dictionaryId
* @param item
* @param id
* @param pos
* @param owner
* @return
* @throws QuadrigaStorageException
*/
public abstract void addNewDictionariesItems(String dictionaryId, String item, String id, String pos, String owner)
throws QuadrigaStorageException;
/**
* Add a new dictionary
*
* @param newDictionary
* @return
* @throws QuadrigaStorageException
*/
public abstract void addNewDictionary(IDictionary newDictionary) throws QuadrigaStorageException;
/**
* get Dictionary name from dictionary id
*
* @param dictionaryid
* @return
* @throws QuadrigaStorageException
*/
public abstract String getDictionaryName(String dictionaryid) throws QuadrigaStorageException;
/**
* search for a term in word power through quadriga
*
* @param item
* @param pos
* @return
*/
public abstract List<DictionaryEntry> searchWordPower(String item, String pos);
/**
* Delete dictionary items from the a dictionary
*
* @param dictionaryId
* @param itemid
* @param ownerName
* @return
* @throws QuadrigaStorageException
*/
public abstract void deleteDictionariesItems(String dictionaryId, String itemid, String ownerName)
throws QuadrigaStorageException;
/**
* Update the existing terms in the dictionary
*
* @param dictionaryId
* @param itemid
* @param term
* @param pos
* @return
* @throws QuadrigaStorageException
*/
public abstract void updateDictionariesItems(String dictionaryId, String itemid, String term, String pos)
throws QuadrigaStorageException;
/**
* Get data from word power
*
* @param dictionaryId
* @param itemid
* @return
*/
public abstract List<DictionaryEntry> getUpdateFromWordPower(String dictionaryId, String itemid);
/**
* get Item index from dictionary for updating or deleting a term
*
* @param termId
* @param dictionaryItems
* @return
*/
public abstract Item getDictionaryItemIndex(String termId, Item dictionaryItems);
/**
* this method used to call the db manager method and return collaborators
* which are present in the current dictionary
*
* @param dictionaryId
* @return List<IDictionaryCollaborator>
* @throws QuadrigaStorageException
*/
public abstract List<IDictionaryCollaborator> showCollaboratingUsers(String dictionaryId)
throws QuadrigaStorageException;
/**
* Delete a dictinary
*
* @param dictionaryId
* @return
* @throws QuadrigaStorageException
*/
public abstract void deleteDictionary(String dictionaryId) throws QuadrigaStorageException;
/**
* Check for user permission on the dictionary
*
* @param userId
* @param dicitonaryId
* @return
* @throws QuadrigaStorageException
* @throws QuadrigaAccessException
*/
public abstract boolean userDictionaryPerm(String userId, String dicitonaryId)
throws QuadrigaStorageException, QuadrigaAccessException;
public abstract List<IDictionary> getDictionaryCollabOfUser(String userId)
throws QuadrigaStorageException, QuadrigaAccessException;
public abstract List<String> getDictionaryCollaboratorRoles(String userId, String dicitonaryId)
throws QuadrigaStorageException;
public abstract List<IDictionaryItems> getDictionaryItemsDetailsCollab(String dictionaryid)
throws QuadrigaStorageException;
public abstract void deleteDictionaryItemsCollab(String dictionaryId, String itemid)
throws QuadrigaStorageException;
public abstract String getDictionaryOwner(String dictionaryid) throws QuadrigaStorageException;
public abstract void addDictionaryItems(Item dictionartItems, String[] values, String dictionaryId)
throws QuadrigaStorageException;
public abstract String getDictionaryId(String dictName) throws QuadrigaStorageException;
public abstract String getProjectsTree(String userName, String dictionaryId)
throws QuadrigaStorageException, JSONException;
public abstract IDictionary getDictionaryDetails(String dictionaryId) throws QuadrigaStorageException;
public abstract void updateDictionaryDetailsRequest(IDictionary dictionary, String userName)
throws QuadrigaStorageException;
public abstract List<IDictionary> getNonAssociatedProjectDictionaries(String projectId)
throws QuadrigaStorageException;
public abstract List<IDictionaryItems> getDictionaryItems(String dictionaryid)
throws QuadrigaStorageException;
}