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.PegawaiVO; import com.jasamedika.medifirst2000.vo.RekamDataPegawaiVO; /** * Converter class between Pasien and PasienVO * * @author Askur */ @Component public class PegawaiConverter implements BaseVoConverter { @Override public Pegawai transferVOToModel(PegawaiVO 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) { PegawaiVO vo = new PegawaiVO(); vo = transferModelToVO(pegawai, vo); vos.add(vo); } return vos; } @Override public PegawaiVO transferModelToVO(Pegawai model, PegawaiVO vo) { if (null == vo) vo = new PegawaiVO(); 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()); String json = gson.toJson(serialized); vo = gson.fromJson(json, PegawaiVO.class); } catch (Exception e) { e.printStackTrace(); } return vo; } public PegawaiVO transferModelToVOCustom(Pegawai model, PegawaiVO vo, String[] fieldsToInclude) { if (null == vo) vo = new PegawaiVO(); try { Map serialized = model.serialize(fieldsToInclude, model.getClass().getSimpleName()); Gson gson = new Gson(); String json = gson.toJson(serialized); vo = gson.fromJson(json, PegawaiVO.class); } catch (Exception e) { e.printStackTrace(); } return vo; } public Pegawai transferVOToModel(RekamDataPegawaiVO 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; } public RekamDataPegawaiVO transferModelToVO(Pegawai model, RekamDataPegawaiVO vo) { if (null == vo) vo = new RekamDataPegawaiVO(); 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("pangkat", model.getPangkat()); String json = gson.toJson(serialized); vo = gson.fromJson(json, RekamDataPegawaiVO.class); } catch (Exception e) { e.printStackTrace(); } return vo; } }