All Downloads are FREE. Search and download functionalities are using the official Maven repository.

net.anotheria.anosite.gen.anoaccessapplicationdata.service.fixture.AnoAccessApplicationDataServiceFixtureImpl Maven / Gradle / Ivy

/**
 ************************************************************************************
 *** AnoAccessApplicationDataServiceFixtureImpl.java                              ***
 *** The implementation of the IAnoAccessApplicationDataService for unit testing. ***
 *** generated by AnoSiteGenerator (ASG), Version: 4.2.2                          ***
 *** Copyright (C) 2005 - 2025 Anotheria.net, www.anotheria.net                   ***
 *** All Rights Reserved.                                                         ***
 ************************************************************************************
 *** Don't edit this code, if you aren't sure                                     ***
 *** that you do exactly know what you are doing!                                 ***
 *** It's better to invest time in the generator, as into the generated code.     ***
 ************************************************************************************
 */

package net.anotheria.anosite.gen.anoaccessapplicationdata.service.fixture;

import java.util.List;
import java.util.Set;
import net.anotheria.util.sorter.SortType;
import net.anotheria.util.sorter.StaticQuickSorter;
import net.anotheria.util.slicer.Segment;
import net.anotheria.util.slicer.Slicer;
import net.anotheria.anodoc.query2.DocumentQuery;
import net.anotheria.anodoc.query2.QueryResult;
import net.anotheria.anodoc.query2.QueryResultEntry;
import net.anotheria.anodoc.query2.QueryProperty;
import net.anotheria.util.xml.XMLNode;
import net.anotheria.util.xml.XMLAttribute;
import org.codehaus.jettison.json.JSONArray;
import org.codehaus.jettison.json.JSONObject;
import net.anotheria.anosite.gen.shared.util.DocumentName;
import net.anotheria.anosite.gen.anoaccessapplicationdata.service.IAnoAccessApplicationDataService;
import net.anotheria.anosite.gen.anoaccessapplicationdata.service.AnoAccessApplicationDataServiceException;
import net.anotheria.asg.service.BaseFixtureService;
import net.anotheria.asg.service.IFixtureService;
import java.util.concurrent.ConcurrentHashMap;
import java.util.Map;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.ArrayList;
import net.anotheria.anosite.gen.anoaccessapplicationdata.data.UserData;
import net.anotheria.anosite.gen.anoaccessapplicationdata.data.UserDataXMLHelper;
import net.anotheria.anosite.gen.anoaccessapplicationdata.data.UserDataDocument;

public class AnoAccessApplicationDataServiceFixtureImpl extends BaseFixtureService implements IAnoAccessApplicationDataService, IFixtureService{

	private static AnoAccessApplicationDataServiceFixtureImpl instance;

	private Map userdataMap;
	private AtomicInteger userdataIdHolder;

	private AnoAccessApplicationDataServiceFixtureImpl(){
		reset();
		addServiceListener(new net.anotheria.anosite.cms.listener.CRUDLogListener());
		addServiceListener(new net.anotheria.anosite.cms.listener.UserAccessGrantListener());
		addServiceListener(new net.anotheria.anosite.cms.listener.AutoTransferAnoAccessApplicationDataListener());
	}

	static final AnoAccessApplicationDataServiceFixtureImpl getInstance(){
		if (instance==null){
			instance = new AnoAccessApplicationDataServiceFixtureImpl();
		}
		return instance;
	}

	@Override public void reset(){
		userdataMap = new ConcurrentHashMap();
		userdataIdHolder = new AtomicInteger(0);

	}

	@Override public List getUserDatas() throws AnoAccessApplicationDataServiceException {
		List ret = new ArrayList();
		ret.addAll(userdataMap.values());
		return ret;
	}

	@Override public List getUserDatas(SortType sortType) throws AnoAccessApplicationDataServiceException {
		return StaticQuickSorter.sort(getUserDatas(), sortType);
	}

	@Override public void deleteUserData(UserData userdata) throws AnoAccessApplicationDataServiceException {
		deleteUserData(userdata.getId());
	}

	@Override public void deleteUserData(String id) throws AnoAccessApplicationDataServiceException {
		UserData old = userdataMap.remove(id);
		if (old!=null){
			fireObjectDeletedEvent(old);
		}
	}

	/**
	 * Deletes multiple UserData objects.
	 */
	@Override public void deleteUserDatas(List list) throws AnoAccessApplicationDataServiceException {
		for (UserData userdata : list){
			deleteUserData(userdata);
		}
	}

	@Override public UserData getUserData(String id) throws AnoAccessApplicationDataServiceException {
		UserData userdata = userdataMap.get(id);
		if (userdata==null)
			throw new AnoAccessApplicationDataServiceException("No UserData with id "+id+" found");
		return userdata;
	}

	@Override public UserData importUserData(UserData userdata) throws AnoAccessApplicationDataServiceException {
		userdataMap.put(userdata.getId(), userdata);
		return userdata;
	}

	@Override public List importUserDatas(List list) throws AnoAccessApplicationDataServiceException {
		List ret = new ArrayList();
		for (UserData userdata : list)
			ret.add(importUserData(userdata));
		return ret;
	}

	@Override public UserData createUserData(UserData userdata) throws AnoAccessApplicationDataServiceException {
		String nextId = ""+userdataIdHolder.incrementAndGet();
		// //CMS Specific code
		UserDataDocument newUserdata = (UserDataDocument)userdata;
		newUserdata.renameTo(nextId);
		userdataMap.put(newUserdata.getId(), newUserdata);
		fireObjectCreatedEvent(newUserdata);
		return newUserdata;
	}

	/**
	 * Creates multiple new UserData objects.
	 * Returns the created versions.
	 */
	@Override public List createUserDatas(List list) throws AnoAccessApplicationDataServiceException {
		List ret = new ArrayList();
		for (UserData userdata : list)
			ret.add(createUserData(userdata));
		return ret;
	}

	/**
	 * Updates multiple new UserData objects.
	 * Returns the updated versions.
	 */
	@Override public List updateUserDatas(List list) throws AnoAccessApplicationDataServiceException {
		List ret = new ArrayList();
		for (UserData userdata : list)
			ret.add(updateUserData(userdata));
		return ret;
	}

	@Override public UserData updateUserData(UserData userdata) throws AnoAccessApplicationDataServiceException {
		UserData oldVersion = userdataMap.put(userdata.getId(), userdata);
		if (oldVersion!=null){
				fireObjectUpdatedEvent(oldVersion, userdata);
		}
		return userdata;
	}

	@Override public List getUserDatasByProperty(String propertyName, Object value) throws AnoAccessApplicationDataServiceException {
		List list = getUserDatas();
		List ret = new ArrayList();
		for (UserData userdata : list){
			Object propertyValue = userdata.getPropertyValue(propertyName);
			if (propertyValue!=null && propertyValue.equals(value))
				ret.add(userdata);
		}
		return ret;
	}

	@Override public List getUserDatasByProperty(String propertyName, Object value, SortType sortType) throws AnoAccessApplicationDataServiceException {
		return StaticQuickSorter.sort(getUserDatasByProperty(propertyName, value), sortType);
	}
	/**
	 * Executes a query on UserDatas
	 */
	@Override public QueryResult executeQueryOnUserDatas(DocumentQuery query) throws AnoAccessApplicationDataServiceException {
		List allUserDatas = getUserDatas();
		QueryResult result = new QueryResult();
		for (int i=0; i partialResult = query.match(allUserDatas.get(i));
			result.add(partialResult);
		}
		return result;
	}

	/**
	 * Returns all UserData objects, where property matches.
	 */
	@Override public List getUserDatasByProperty(QueryProperty... properties) throws AnoAccessApplicationDataServiceException {
		List list = getUserDatas();
		if (properties==null || properties.length==0)
			return list;
		List ret = new ArrayList();
		for (UserData userdata : list){
			boolean mayPass = true;
			for (QueryProperty p : properties){
				Object propertyValue = userdata.getPropertyValue(p.getName());
				if (mayPass && (propertyValue==null || (!(p.doesMatch(propertyValue)))))
					mayPass = false;
			}
			if (mayPass)
				ret.add(userdata);
		}
		return ret;
	}

	/**
	 * Returns all UserData objects, where property matches, sorted
	 */
	@Override public List getUserDatasByProperty(SortType sortType, QueryProperty... property) throws AnoAccessApplicationDataServiceException {
		return StaticQuickSorter.sort(getUserDatasByProperty(property), sortType);
	}

	/**
	 * Returns UserData objects count.
	 */
	@Override public int getUserDatasCount() throws AnoAccessApplicationDataServiceException {
		return userdataMap.values().size();
	}

	/**
	 * Returns UserData objects segment.
	 */
	public List getUserDatas(Segment aSegment) throws AnoAccessApplicationDataServiceException {
		return Slicer.slice(aSegment, getUserDatas()).getSliceData();
	}

	/**
	 * Returns UserData objects segment, where property matched.
	 */
	public List getUserDatasByProperty(Segment aSegment, QueryProperty... property) {
		int pLimit = aSegment.getElementsPerSlice();
		int pOffset = aSegment.getSliceNumber() * aSegment.getElementsPerSlice() - aSegment.getElementsPerSlice();
		List ret = new ArrayList<>();
		List src = new ArrayList<>();
		src.addAll(userdataMap.values());
		for (UserData userdata : src) {;
			boolean mayPass = true;
			for (QueryProperty qp : property) {;
				mayPass = mayPass && qp.doesMatch(userdata.getPropertyValue(qp.getName()));
			}
			if (mayPass)
				ret.add(userdata);
			if (ret.size() > pOffset + pLimit)
				break;
		}
		return Slicer.slice(aSegment, ret).getSliceData();
	}

	/**
	 * Returns UserData objects segment, where property matched, sorted.
	 */
	public List getUserDatasByProperty(Segment aSegment, SortType aSortType, QueryProperty... aProperty){
		return StaticQuickSorter.sort(getUserDatasByProperty(aSegment, aProperty), aSortType);
	}


	public XMLNode exportUserDatasToXML(){
		XMLNode ret = new XMLNode("UserDatas");
		try{
			List list = getUserDatas();
			ret.addAttribute(new XMLAttribute("count", list.size()));
			for (UserData object : list)
				ret.addChildNode(UserDataXMLHelper.toXML(object));
			return ret;
		}
		catch(AnoAccessApplicationDataServiceException e){
			throw new RuntimeException("exportUserDatasToXML() failure: " , e);
		}
	}

	public XMLNode exportUserDatasToXML(List list){
		XMLNode ret = new XMLNode("UserDatas");
		ret.addAttribute(new XMLAttribute("count", list.size()));
		for (UserData object : list)
			ret.addChildNode(UserDataXMLHelper.toXML(object));
		return ret;
	}

	public XMLNode exportUserDatasToXML(String languages[]){
		XMLNode ret = new XMLNode("UserDatas");
		try{
			List list = getUserDatas();
			ret.addAttribute(new XMLAttribute("count", list.size()));
			for (UserData object : list)
				ret.addChildNode(UserDataXMLHelper.toXML(object, languages));
			return ret;
		}
		catch(AnoAccessApplicationDataServiceException e){
			throw new RuntimeException("exportUserDatasToXML() failure: " , e);
		}
	}

	public XMLNode exportUserDatasToXML(String languages[], List list){
		XMLNode ret = new XMLNode("UserDatas");
		ret.addAttribute(new XMLAttribute("count", list.size()));
		for (UserData object : list)
			ret.addChildNode(UserDataXMLHelper.toXML(object, languages));
		return ret;
	}

	public void fetchUserData (final String id, Set addedDocuments, JSONArray data) throws AnoAccessApplicationDataServiceException {
		throw new UnsupportedOperationException(" not implemented and should not BE!");
	}

	public void executeParsingForDocument (final DocumentName documentName, final JSONObject data) throws AnoAccessApplicationDataServiceException {
		throw new UnsupportedOperationException(" not implemented and should not BE!");
	}

	/**
	 * Executes a query on all data objects (documents, vo) which are part of this module and managed by this service
	 */
	public QueryResult executeQueryOnAllObjects(DocumentQuery query) throws AnoAccessApplicationDataServiceException {
		QueryResult ret = new QueryResult();
		ret.add(executeQueryOnUserDatas(query).getEntries());
		return ret;
	} //executeQueryOnAllObjects

	@Override public XMLNode exportToXML(){
		XMLNode ret = new XMLNode("AnoAccessApplicationData");

		ret.addChildNode(exportUserDatasToXML());

		return ret;
	}

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy