DocDetailsNotNullConverter.java

package sk.iway.iwcm.doc;

import javax.persistence.AttributeConverter;
import javax.persistence.Converter;

import sk.iway.iwcm.admin.layout.DocDetailsDto;

/**
 * Konvertuje databazovy typ int docId na DocDetailsDto objekt a naopak.
 * Ak je DocDetailsDto NULL vrati hodnotu -1
 *
 * Priklad pouzitia:
 * @Column(name = "email_doc_id")
 * @Convert(converter = DocDetailsConverter.class)
 * private DocDetailsDto emailDoc;
 *
 * v databaze sa ulozi hodnota docId ale na FE bude dostupny DocDetailsDto objekt
 *
 */
@Converter
public class DocDetailsNotNullConverter implements AttributeConverter<DocDetailsDto, Integer> {

    @Override
    public Integer convertToDatabaseColumn(DocDetailsDto doc) {
        //podmienka >0 je aby fungovala anotacia @NotNull na entite
        if (doc != null && doc.getDocId()>0) return Integer.valueOf(doc.getDocId());
        return -1;
    }

    @Override
    public DocDetailsDto convertToEntityAttribute(Integer docId) {
        if (docId != null) {
            DocDB docDB = DocDB.getInstance();
            DocDetails doc = docDB.getBasicDocDetails(docId, false);
            if (doc != null) return new DocDetailsDto(doc);
        }
        return null;
    }

}