Monday, September 30, 2013

Nice Collection Of Code. -> In Florida, the Front Lines of a High-Pitched, Bite-Size War

Nice Collection of Algos... 

Pursue DAO Pattern:



The motivation is when you have a cascade of database operations that are common between the components, the implement a Bag to cover the search space with allcommon, and by the end you define delegation Object to execute specific operations. 
Or also, the case of who smokes is the cigarrete.




package org.nanotek.dao;
import java.io.Serializable;
import java.util.List;
import org.nanotek.util.Base;
public interface DAO <T extends Base<?>>{ }
package org.nanotek.dao;
import java.util.List;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.nanotek.util.Base;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
public abstract class BaseDAO {
        protected Class<Base<?>> clazz; //get set methods for the base class and the class is not bound to a specific container //yet. but its methods shall be declared in an interface. } //which is the interface above.
 There after you implement the bag using the BaseDAO/DAO as follows. 



public class TenantDAO<D extends DAO<Base<?>>, E extends Base<?>> extends BaseDAO implements DAOBag<DAO<Base<?>>, Base<?>> {


        /**
                Deixa ae que agora que foi criado, soh eh removido quando morre.
         **/
        protected DAO<E> dAOInstance; }
package org.nanotek.dao;

import org.nanotek.util.Base;

public interface SpecializedBaseDAOInterface <T extends Base<?>>{

        public boolean doSomethingNice(T instance);//return true or false to confirm if the operation
        //was completed sucessfully (wich means something nice happen
        //can also return a type T that was "enriched' by interceptors pre and pos.

}

How many PorcupineDelegates you will need?
package org.nanotek.dao;

import org.nanotek.util.Base;

public class DelegateDAO extends TenantDAO<DAO<Base<?>>, Base<?>> implements SpecializedBaseDAOInterface<Base<?>> {

        public DelegateDAO() {
        }

        @Override
        public boolean doSomethingNice(Base<?> instance) {
                return false;
        }

}