package tryout.stub; import java.util.*; import javax.persistence.LockModeType; import org.apache.commons.lang3.RandomStringUtils; import eu.ggnet.dwoss.rights.RightsAgent; import eu.ggnet.dwoss.rights.api.AtomicRight; import eu.ggnet.dwoss.rights.entity.Operator; import eu.ggnet.dwoss.rights.entity.Persona; /** * * @author Bastian Venz */ public class RightsAgentStub implements RightsAgent { List<Persona> personas = new ArrayList<>(); List<Operator> operators = new ArrayList<>(); { for (int i = 0; i < 3; i++) { Persona persona = new Persona(); persona.setName("Persona " + i); persona.addAll(getRandomRights()); personas.add(persona); } for (int j = 0; j < 3; j++) { Operator operator = new Operator(); for (AtomicRight atomicRight : getRandomRights()) { operator.add(atomicRight); } operator.setUsername("User " + j); int till = (int)(Math.random() * 3 - 1); for (Persona persona : personas.subList(0, till)) { operator.add(persona); } operator.setSalt(RandomStringUtils.randomAlphanumeric(6).getBytes()); operator.setPassword(RandomStringUtils.randomAlphanumeric(5).getBytes()); operator.setQuickLoginKey((int)(Math.random() * 999)); operators.add(operator); } } public Operator make(String username, Collection<AtomicRight> activeRights) { Operator o = new Operator(); o.setUsername(username); for (AtomicRight right : activeRights) { o.add(right); } return o; } private static List<AtomicRight> getRandomRights() { List<AtomicRight> rights = Arrays.asList(AtomicRight.values()); Collections.shuffle(rights); int till = (int)(Math.random() * rights.size() - 1) + 1; rights = rights.subList(0, till); return rights; } @Override public Persona store(Persona object) { System.out.println("Persona Stored=" + object); if ( !personas.contains(object) ) personas.add(object); return object; } @Override public Operator store(Operator object) { System.out.println("Operator Stored=" + object); if ( !operators.contains(object) ) operators.add(object); return object; } @Override public Operator findOperatorByUsername(String username) { throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. } @Override public <T> long count(Class<T> entityClass) { if ( entityClass == Operator.class ) { return operators.size(); } else { return personas.size(); } } @Override public <T> List<T> findAll(Class<T> entityClass) { if ( entityClass == Operator.class ) { return (List<T>)operators; } else { return (List<T>)personas; } } @Override public <T> List<T> findAll(Class<T> entityClass, int start, int amount) { return findAll(entityClass); } @Override public <T> List<T> findAllEager(Class<T> entityClass) { return findAll(entityClass); } @Override public <T> List<T> findAllEager(Class<T> entityClass, int start, int amount) { return findAll(entityClass); } @Override public <T> T findById(Class<T> entityClass, Object id) { if ( entityClass == Operator.class ) { for (Operator operator : operators) { if ( operator.getId() == ((Long)id) ) return (T)operator; } } else { for (Persona persona : personas) { if ( persona.getId() == ((Long)id) ) return (T)persona; } } return null; } @Override public <T> T findById(Class<T> entityClass, Object id, LockModeType lockModeType) { return findById(entityClass, id); } @Override public <T> T findByIdEager(Class<T> entityClass, Object id) { return findById(entityClass, id); } @Override public <T> T findByIdEager(Class<T> entityClass, Object id, LockModeType lockModeType) { return findById(entityClass, id); } }