Search code examples
mysqljspjpapersistencepojo

DAO MVC: why my class is NOT POJO


I use DAO MVC, and I after some googling I consider to store some variables as Enum in java and String in MySQL. So I create in Item.java (that will be persist into Item table) static initialization and static methods to convert Enum into String and vise versa. But someone said me that after this static initialization and static methods my Item.java class became NOT POJO.

Question:

  1. Why it became NOT POJO?
  2. And if I'll make those methods not static Item.java class will be POJO?

EDITED: MY code:

package model;

import java.util.EnumMap;
import java.util.HashMap;
import java.util.Map;

public class Order {

    public enum OrderStatus {
        NOT_REVIEWED,
        APPROVED,
        REJECTED,
        RETURNED
    } 

    // ==================
    // =   Transient    = 
    // ==================
    private static final Map<String, OrderStatus> convertStringToOrderStatusMap = new HashMap<String, OrderStatus>(3);
    private static final Map<OrderStatus, String> convertOrderStatusToStringMap = new EnumMap<OrderStatus, String>(OrderStatus.class);

    static {
        convertStringToOrderStatusMap.put("not reviewed", OrderStatus.NOT_REVIEWED);
        convertStringToOrderStatusMap.put("approved", OrderStatus.APPROVED);
        convertStringToOrderStatusMap.put("rejected", OrderStatus.REJECTED);
        convertStringToOrderStatusMap.put("returned", OrderStatus.RETURNED);
        convertOrderStatusToStringMap.put(OrderStatus.NOT_REVIEWED, "not reviewed");
        convertOrderStatusToStringMap.put(OrderStatus.APPROVED, "approved");
        convertOrderStatusToStringMap.put(OrderStatus.REJECTED, "rejected");
        convertOrderStatusToStringMap.put(OrderStatus.RETURNED, "returned");
    }
    // ==================
    // =   Attributes   = 
    // ==================
    private Integer orderId; //Primary key
    private OrderStatus status;
    private Integer reimbursement;
    private String firstName;
    private String secondName;
    private String passportData;
    private String pickUpDate; 
    private String dropOffDate;
    //java.util.Date date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse("2011-05-18 16:29:31");
    private String customerCell;
    private String customerAddress;

    // ==================
    // =  Foreign Keys  = 
    // ==================
    private User user;
    private Car car;

    // ==================
    // = Public methods = 
    // ==================

    public Integer getOrderId() {
        return orderId;
    }

    public void setOrderId(Integer orderId) {
        this.orderId = orderId;
    }

    public String getStatus() {
        return convertOrderStatusToString(status);
    }
    public void setStatus(OrderStatus status) {
        this.status = status;
    }

    public Integer getReimbursement() {
        return this.reimbursement;
    }

    public void setReimbursement(Integer value) {
        this.reimbursement = value;
    }

    public String getFirstName() {
        return firstName;
    }

    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }

    public String getSecondName() {
        return secondName;
    }

    public void setSecondName(String secondName) {
        this.secondName = secondName;
    }

    public String getPassportData() {
        return passportData;
    }

    public void setPassportData(String passportData) {
        this.passportData = passportData;
    }

    public String getPickUpDate() {
        return pickUpDate;
    }

    public void setPickUpDate(String pickUpDate) {
        this.pickUpDate = pickUpDate;
    }

    public String getDropOffDate() {
        return dropOffDate;
    }

    public void setDropOffDate(String dropOffDate) {
        this.dropOffDate = dropOffDate;
    }

    public String getCustomerCell() {
        return customerCell;
    }

    public void setCustomerCell(String customerCell) {
        this.customerCell = customerCell;
    }

    public String getCustomerAddress() {
        return customerAddress;
    }

    public void setCustomerAddress(String customerAddress) {
        this.customerAddress = customerAddress;
    }

    public User getUser() {
        return user;
    }

    public void setUser(User user) {
        this.user = user;
    }

    public Car getCar() {
        return car;
    }

    public void setCar(Car car) {
        this.car = car;
    }

    public static OrderStatus converStringToOrderStatus(String status) {
        return convertStringToOrderStatusMap.get(status);
    }

    public static String convertOrderStatusToString(OrderStatus status) {
        return convertOrderStatusToStringMap.get(status);
    }
}

Solution

  • Because a Plain Old Java Object only has data. Adding logic and methods means that it's no longer Plain Old Java Object.

    That doesn't necessarily make it a bad thing, but you might be able to refactor the logic out into a class of it's own.