package com.jasamedika.medifirst2000.converter; import java.lang.reflect.Field; import java.util.ArrayList; import java.util.List; import java.util.Map; import javax.persistence.Column; import javax.persistence.JoinColumn; import javax.persistence.OneToMany; import org.springframework.stereotype.Component; import com.google.gson.Gson; import com.jasamedika.medifirst2000.converter.base.BaseVoConverter; import com.jasamedika.medifirst2000.entities.Pegawai; import com.jasamedika.medifirst2000.vo.PegawaiJabatanVO; @Component public class MapPegawaiJabatanToUnitKerjaConverter implements BaseVoConverter { @Override public Pegawai transferVOToModel(PegawaiJabatanVO vo, Pegawai model) { if (null == model) model = new Pegawai(); try { String[] fieldsToInclude = null; Map serialized = vo.serialize(fieldsToInclude, vo.getClass().getName()); Gson gson = new Gson(); String json = gson.toJson(serialized); model = gson.fromJson(json, Pegawai.class); } catch (Exception e) { e.printStackTrace(); } return model; } @Override public List transferListOfModelToListOfVO(List models, List vos) { if (null == vos) vos = new ArrayList(); if (null == models) return vos; for (Pegawai pegawai : models) { PegawaiJabatanVO vo = new PegawaiJabatanVO(); vo = transferModelToVO(pegawai, vo); vos.add(vo); } return vos; } @Override public PegawaiJabatanVO transferModelToVO(Pegawai model, PegawaiJabatanVO vo) { if (null == vo) vo = new PegawaiJabatanVO(); try { List fieldsToInclude = new ArrayList(); for (Field field : model.GetFields(model.getClass())) { String str = field.getName(); String name = field.getName(); if (name.equals("serialVersionUID")) continue; Boolean valid = false; for (java.lang.annotation.Annotation annotation : field.getDeclaredAnnotations()) { if (annotation instanceof JoinColumn) { valid = true; } else if (annotation instanceof Column) { Column column = (Column) annotation; if (column.name().endsWith("Fk")) if (field.getName().endsWith("Id") == false) valid = true; } else if (annotation instanceof OneToMany) { valid = true; } } if (valid == false) fieldsToInclude.add(str); } Map serialized = model.ToMap(); Gson gson = new Gson(); // serialized.put("jenisPegawai", model.getJenisPegawai()); // serialized.put("pegawai", model.getId()); // serialized.put("jabatanInternal", model.getJabatanInternal()); // serialized.put("unitKerja", model.getUnitKerja()); serialized.put("unitKerjaPegawai", model.getUnitKerja().getUnitKerja()); serialized.put("isCanCreateJadwal", model.getJabatanInternal().getNamaJabatan().contains("Kepala") ? true : false); serialized.put("isPrimary", true); serialized.put("statusEnabled1", true); String json = gson.toJson(serialized); vo = gson.fromJson(json, PegawaiJabatanVO.class); } catch (Exception e) { e.printStackTrace(); } return vo; } }