Subversion Repositories SmartDukaan

Rev

Rev 198 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed

package in.shop2020.creation.controllers;

import java.io.PrintWriter;
import java.io.StringWriter;
import java.io.Writer;
import java.util.Collection;
import java.util.Map;

import in.shop2020.metamodel.core.Entity;
import in.shop2020.metamodel.definitions.EntityContainer;
import in.shop2020.metamodel.util.ExpandedEntity;
import in.shop2020.metamodel.util.SequenceGenerator;
import in.shop2020.util.DBUtils;
import in.shop2020.util.Utils;

import org.apache.juli.logging.Log;
import org.apache.juli.logging.LogFactory;
import org.apache.struts2.rest.DefaultHttpHeaders;
import org.apache.struts2.rest.HttpHeaders;

import org.apache.struts2.convention.annotation.Result;
import org.apache.struts2.convention.annotation.Results;
import org.apache.struts2.interceptor.ParameterAware;

@Results({
    @Result(name="success", type="redirectAction", 
                params = {"actionName" , "entity"})
})
public class EntityController implements ParameterAware {
        
        /**
         * 
         */
        private static Log log = LogFactory.getLog(EntityController.class);
        
        /**
         * 
         */
        private String id;
        
        private ExpandedEntity expEntity;
        
        private Collection<Entity> entities;

        private Map<String, String[]> reqparams;
        
    // GET /entity
    public HttpHeaders index() {
        log.info("EntityController.index");
        
        EntityContainer ents = new EntityContainer();
        
        try {
                        this.entities = ents.getEntities().values();
                } catch (Exception e) {
                        log.error(this.getStackTrace(e));
                }
        
        return new DefaultHttpHeaders("index")
            .disableCaching();
    }

    // GET /entity
    public String create() {
        log.info("EntityController.create");
        
                SequenceGenerator sg;
                try {
                        sg = SequenceGenerator.getInstance();
                        long entityID = sg.getNextSequence(SequenceGenerator.ENTITY);

                        String categoryID = this.reqparams.get("category")[0];
                        Entity entity = new Entity(entityID, Long.parseLong(categoryID));

                        entity.setBrand(this.reqparams.get("brand")[0]);
                        entity.setModelName(this.reqparams.get("modelname")[0]);
                        entity.setModelNumber(this.reqparams.get("modelnumber")[0]);
                        
                        EntityContainer entContainer = new EntityContainer();
                        entContainer.addEntity(entity);
                        
                        DBUtils.store(entContainer.getEntities(), Utils.ENTITIES_DB_PATH + 
                                        "entities" + ".ser");
                        
                        String entitiesbycategoryDBFile = Utils.ENTITIES_DB_PATH + 
                                "entitiesbycategory" + ".ser";
                        
                        DBUtils.store(entContainer.getEntitiesbyCategory(), 
                                        entitiesbycategoryDBFile);
                        
                this.setId(new Long(entityID).toString());
                } catch (Exception e) {
                        log.error(this.getStackTrace(e));
                }
        
        return edit();
    }
    
    // GET /entity/1/edit
    public String edit() {
        log.info("EntityController.edit");
        
        long entityID = Long.parseLong(this.getId());
        log.info("entityID:" + entityID);
        
        EntityContainer ents = new EntityContainer();
        
        try {
                        this.expEntity = ents.getExpandedEntity(entityID);
                        log.info("this.expEntity:" + this.expEntity);
                } catch (Exception e) {
                        log.error(this.getStackTrace(e));
                }
                
        return "edit";
    }

    // GET /entity/new
    public String editNew() {
        log.info("EntityController.editNew");

        return "editNew";
    }

    // GET /entity/1
    public String update() {
        log.info("EntityController.update");

        return "?";
    }
    
    /**
         * @return the entities
         */
        public Collection<Entity> getEntities() {
                return entities;
        }

    /**
         * @return the entities
         */
        public ExpandedEntity getEntity() {
                return expEntity;
        }

        
        /**
     * 
     * @param id
     */
    public void setId(String id) {
        this.id = id;
    }
    
    /**
     * 
     */
    public String getId() {
        return this.id;
    }

        @Override
        public void setParameters(Map<String, String[]> reqmap) {
                log.info("setParameters:" + reqmap);
                
                this.reqparams = reqmap;
        }

        /**
         * 
         * @param aThrowable
         * @return
         */
        private String getStackTrace(Throwable aThrowable) {
            final Writer result = new StringWriter();
            final PrintWriter printWriter = new PrintWriter(result);
            aThrowable.printStackTrace(printWriter);
            return result.toString();
        }

}