From 8fb26ced95f0d713aa2bb6ac2f86ebf569b62794 Mon Sep 17 00:00:00 2001 From: Salman Manoe Date: Sat, 26 Aug 2023 23:22:44 +0700 Subject: [PATCH] Clean code Persiapan service split jumlah pelayanan cloning object persistence --- .../converter/BaseConverterImpl.java | 158 +++++++++--------- .../RegistrasiPasienOnlineServiceImpl.java | 106 ++++-------- 2 files changed, 111 insertions(+), 153 deletions(-) diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/converter/BaseConverterImpl.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/converter/BaseConverterImpl.java index a4fbf49d..c6167cb6 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/converter/BaseConverterImpl.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/converter/BaseConverterImpl.java @@ -1,22 +1,5 @@ package com.jasamedika.medifirst2000.converter; -import java.io.IOException; -import java.lang.reflect.Field; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.Iterator; -import java.util.List; -import java.util.Map; - -import javax.persistence.Column; -import javax.persistence.JoinColumn; -import javax.persistence.OneToMany; - -import org.hibernate.Hibernate; -import org.hibernate.proxy.HibernateProxy; -import org.springframework.data.domain.Page; -import org.springframework.stereotype.Component; - import com.google.gson.Gson; import com.google.gson.GsonBuilder; import com.google.gson.TypeAdapter; @@ -29,12 +12,23 @@ import com.jasamedika.medifirst2000.base.vo.BaseActiveVO; import com.jasamedika.medifirst2000.converter.base.BaseVoConverter; import com.jasamedika.medifirst2000.util.ExtendedSpringBeanUtil; import com.jasamedika.medifirst2000.util.JsonUtil; +import org.hibernate.Hibernate; +import org.hibernate.proxy.HibernateProxy; +import org.springframework.data.domain.Page; +import org.springframework.stereotype.Component; + +import javax.persistence.Column; +import javax.persistence.JoinColumn; +import javax.persistence.OneToMany; +import java.io.IOException; +import java.lang.reflect.Field; +import java.util.*; @Component public class BaseConverterImpl implements BaseVoConverter { private Class classOfT; -// private Class classOfT1; + // private Class classOfT1; private Boolean useGson; private Boolean useExclude; @@ -75,65 +69,66 @@ public class BaseConverterImpl imp public void setUseExclude(Boolean useExclude) { this.useExclude = useExclude; } - + private static final TypeAdapterFactory FACTORY = new TypeAdapterFactory() { - @Override - @SuppressWarnings("unchecked") - public TypeAdapter create(Gson gson, TypeToken type) { - return (HibernateProxy.class.isAssignableFrom(type.getRawType()) ? (TypeAdapter) new HibernateProxyTypeAdapter(gson) : null); - } + @Override + @SuppressWarnings("unchecked") + public TypeAdapter create(Gson gson, TypeToken type) { + return (HibernateProxy.class.isAssignableFrom(type.getRawType()) + ? (TypeAdapter) new HibernateProxyTypeAdapter(gson) : null); + } }; - + private static final class HibernateProxyTypeAdapter extends TypeAdapter { private final Gson context; - private HibernateProxyTypeAdapter(Gson context) { - this.context = context; - } + private HibernateProxyTypeAdapter(Gson context) { + this.context = context; + } - @Override - public HibernateProxy read(JsonReader r) throws IOException { - throw new UnsupportedOperationException("Not supported"); - } + @Override + public HibernateProxy read(JsonReader r) throws IOException { + throw new UnsupportedOperationException("Not supported"); + } + + @SuppressWarnings({ "rawtypes", "unchecked" }) + @Override + public void write(JsonWriter out, HibernateProxy value) throws IOException { + if (value == null) { + out.nullValue(); + return; + } + // Retrieve the original (not proxy) class + Class baseType = Hibernate.getClass(value); + // Get the TypeAdapter of the original class, to delegate the + // serialization + TypeAdapter delegate = context.getAdapter(TypeToken.get(baseType)); + // Get a filled instance of the original class + Object unproxiedValue = ((HibernateProxy) value).getHibernateLazyInitializer().getImplementation(); + // Serialize the value + delegate.write(out, unproxiedValue); + } - @SuppressWarnings({"rawtypes", "unchecked"}) - @Override - public void write(JsonWriter out, HibernateProxy value) throws IOException { - if (value == null) { - out.nullValue(); - return; - } - // Retrieve the original (not proxy) class - Class baseType = Hibernate.getClass(value); - // Get the TypeAdapter of the original class, to delegate the serialization - TypeAdapter delegate = context.getAdapter(TypeToken.get(baseType)); - // Get a filled instance of the original class - Object unproxiedValue = ((HibernateProxy) value).getHibernateLazyInitializer() - .getImplementation(); - // Serialize the value - delegate.write(out, unproxiedValue); - } - } public T transferModelToVOCustom(T1 model, T vo, String[] fieldsToInclude) { - + try { - -// Add TypeAdapterFactory // Syamsu -// GsonBuilder builder = new GsonBuilder(); -// builder.registerTypeAdapterFactory(BaseConverterImpl.FACTORY); -// Gson gson = builder.create(); -// Sampai sini - - Map serialized = model.serialize(fieldsToInclude, model.getClass().getSimpleName()); - + + // Add TypeAdapterFactory // Syamsu + // GsonBuilder builder = new GsonBuilder(); + // builder.registerTypeAdapterFactory(BaseConverterImpl.FACTORY); + // Gson gson = builder.create(); + // Sampai sini + + Map serialized = model.serialize(fieldsToInclude, model.getClass().getSimpleName()); + Gson gson = new Gson(); - + String json = gson.toJson(serialized); vo = (T) gson.fromJson(json, vo.getClass()); - + } catch (Exception e) { e.printStackTrace(); } @@ -249,7 +244,7 @@ public class BaseConverterImpl imp return vos; } - public T Clone(T model, T vo, String[] expected) throws IllegalArgumentException, IllegalAccessException { + public T clone(T model, T vo, String[] expected) throws IllegalArgumentException, IllegalAccessException { List fieldsToInclude = new ArrayList(); for (Field field : model.GetFields(model.getClass())) { @@ -268,30 +263,26 @@ public class BaseConverterImpl imp return vo; } - public T1 Clone(T1 model, T1 vo, String[] expected) throws IllegalArgumentException, IllegalAccessException { - - List fieldsToInclude = new ArrayList(); - for (Field field : model.GetFields(model.getClass())) { + public T1 clone(T1 model, T1 vo, String[] expected) throws IllegalArgumentException, IllegalAccessException { + for (Field field : BaseModel.GetFields(model.getClass())) { String str = field.getName(); - Boolean valid = false; + boolean valid = false; for (String key : expected) { - if (str.equals(key)) + if (str.equals(key)) { valid = true; + break; + } } if (!valid) { try { field.setAccessible(true); Object obj = field.get(model); field.set(vo, obj); - } catch (IllegalArgumentException | IllegalAccessException e) { e.printStackTrace(); } - } - fieldsToInclude.add(str); } - return vo; } @@ -314,15 +305,16 @@ public class BaseConverterImpl imp Gson gson = new Gson(); try { if (getUseGson() == null || getUseGson() == false) { - if (getUseExclude() == null || getUseExclude() == false) - gson = new GsonBuilder()//.excludeFieldsWithoutExposeAnnotation() - .setDateFormat("yyyy-MM-dd HH:mm:ss.SSS").create(); + if (getUseExclude() == null || getUseExclude() == false) + gson = new GsonBuilder()// .excludeFieldsWithoutExposeAnnotation() + .setDateFormat("yyyy-MM-dd HH:mm:ss.SSS").create(); else gson = new GsonBuilder().excludeFieldsWithoutExposeAnnotation() - .setDateFormat("yyyy-MM-dd HH:mm:ss.SSS").create(); - //serialized = model.serialize(fieldsToInclude.toArray(new String[0]), model.getClass().getName()); + .setDateFormat("yyyy-MM-dd HH:mm:ss.SSS").create(); + // serialized = model.serialize(fieldsToInclude.toArray(new + // String[0]), model.getClass().getName()); String json = gson.toJson(ToMap(model)); - gson = new GsonBuilder()//.excludeFieldsWithoutExposeAnnotation() + gson = new GsonBuilder()// .excludeFieldsWithoutExposeAnnotation() .setDateFormat("yyyy-MM-dd HH:mm:ss.SSS").create(); vo = (T) gson.fromJson(json, vo.getClass()); } @@ -563,16 +555,16 @@ public class BaseConverterImpl imp return maps; } - + public T transferModelToVOCustom(T1 model, T vo) { if (null == vo) vo = (T) new Object(); try { String[] fieldsToInclude = null; - Map serialized = model.serialize(fieldsToInclude,model.getClass().getSimpleName()); + Map serialized = model.serialize(fieldsToInclude, model.getClass().getSimpleName()); Gson gson = new GsonBuilder().excludeFieldsWithoutExposeAnnotation().create(); - String json = gson.toJson(serialized); - vo = (T) gson.fromJson(json, vo.getClass()); + String json = gson.toJson(serialized); + vo = (T) gson.fromJson(json, vo.getClass()); } catch (Exception e) { e.printStackTrace(); } diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/RegistrasiPasienOnlineServiceImpl.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/RegistrasiPasienOnlineServiceImpl.java index ce644779..c453b8f3 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/RegistrasiPasienOnlineServiceImpl.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/RegistrasiPasienOnlineServiceImpl.java @@ -9,7 +9,6 @@ import java.util.Map; import java.util.UUID; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Value; import org.springframework.orm.jpa.JpaSystemException; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -18,14 +17,10 @@ import com.google.gson.Gson; import com.jasamedika.medifirst2000.converter.AgamaConverter; import com.jasamedika.medifirst2000.converter.AsalRujukanConverter; import com.jasamedika.medifirst2000.converter.BaseConverterImpl; -import com.jasamedika.medifirst2000.converter.DesaKelurahanConverter; import com.jasamedika.medifirst2000.converter.GolonganDarahConverter; -import com.jasamedika.medifirst2000.converter.HubunganKeluargaConverter; import com.jasamedika.medifirst2000.converter.JenisKelaminConverter; import com.jasamedika.medifirst2000.converter.KelompokPasienConverter; -import com.jasamedika.medifirst2000.converter.KotaKabupatenConverter; import com.jasamedika.medifirst2000.converter.LoginUserConverter; -import com.jasamedika.medifirst2000.converter.PasienConverter; import com.jasamedika.medifirst2000.converter.PegawaiConverter; import com.jasamedika.medifirst2000.converter.PekerjaanConverter; import com.jasamedika.medifirst2000.converter.PendidikanConverter; @@ -42,7 +37,6 @@ import com.jasamedika.medifirst2000.dao.PasienDaftarDao; import com.jasamedika.medifirst2000.dao.PasienDao; import com.jasamedika.medifirst2000.dao.RegistrasiPelayananPasienDao; import com.jasamedika.medifirst2000.dao.custom.AntrianPasienRegistrasiDaoCustom; -import com.jasamedika.medifirst2000.dao.custom.PasienDaoCustom; import com.jasamedika.medifirst2000.entities.Agama; import com.jasamedika.medifirst2000.entities.Alamat; import com.jasamedika.medifirst2000.entities.AntrianPasienDiPeriksa; @@ -54,21 +48,18 @@ import com.jasamedika.medifirst2000.entities.JadwalDokter; import com.jasamedika.medifirst2000.entities.JenisKelamin; import com.jasamedika.medifirst2000.entities.Kebangsaan; import com.jasamedika.medifirst2000.entities.KelompokPasien; -import com.jasamedika.medifirst2000.entities.LoginUser; import com.jasamedika.medifirst2000.entities.Negara; import com.jasamedika.medifirst2000.entities.Pasien; import com.jasamedika.medifirst2000.entities.PasienDaftar; import com.jasamedika.medifirst2000.entities.Pegawai; import com.jasamedika.medifirst2000.entities.Pekerjaan; import com.jasamedika.medifirst2000.entities.Pendidikan; -import com.jasamedika.medifirst2000.entities.RegistrasiPelayananPasien; import com.jasamedika.medifirst2000.entities.Ruangan; import com.jasamedika.medifirst2000.entities.StatusPerkawinan; import com.jasamedika.medifirst2000.entities.TitlePasien; import com.jasamedika.medifirst2000.enums.StatusAntrianEnum; import com.jasamedika.medifirst2000.enums.TipePasienEnum; import com.jasamedika.medifirst2000.exception.ServiceVOException; -import com.jasamedika.medifirst2000.service.AgamaService; import com.jasamedika.medifirst2000.service.AntrianPasienDiPeriksaService; import com.jasamedika.medifirst2000.service.AntrianPasienRegistrasiService; import com.jasamedika.medifirst2000.service.KelompokPasienService; @@ -80,10 +71,8 @@ import com.jasamedika.medifirst2000.util.Age; import com.jasamedika.medifirst2000.util.AgeCalculator; import com.jasamedika.medifirst2000.util.CommonUtil; import com.jasamedika.medifirst2000.util.DateUtil; -import com.jasamedika.medifirst2000.vo.AgamaVO; import com.jasamedika.medifirst2000.vo.AntrianPasienRegistrasiVO; import com.jasamedika.medifirst2000.vo.DesaKelurahanVO; -import com.jasamedika.medifirst2000.vo.GridAntrianPasienDiPeriksaVO; import com.jasamedika.medifirst2000.vo.GridAntrianPasienRegistrasiVO; import com.jasamedika.medifirst2000.vo.KebangsaanVO; import com.jasamedika.medifirst2000.vo.KelompokPasienVO; @@ -115,9 +104,6 @@ public class RegistrasiPasienOnlineServiceImpl extends BaseVoServiceImpl @Autowired private BaseConverterImpl pasienConverter; - @Autowired - private BaseConverterImpl pasienDaftarConverter; - @Autowired private JenisKelaminConverter jenisKelaminConverter; @@ -142,24 +128,15 @@ public class RegistrasiPasienOnlineServiceImpl extends BaseVoServiceImpl @Autowired private RuanganConverter ruanganConverter; - @Autowired - private LoginUserConverter loginUserConverter; - @Autowired private GolonganDarahConverter golonganDarahConverter; @Autowired private AntrianPasienRegistrasiService antrianPasienRegistrasiService; - @Autowired - private KelompokPasienService kelompokPasienService; - @Autowired private AntrianPasienDiPeriksaService antrianPasienDiPeriksaService; - @Autowired - private RegistrasiPasienConverter registrasiPasienConverter; - @Autowired private PegawaiConverter pegawaiConverter; @@ -172,9 +149,6 @@ public class RegistrasiPasienOnlineServiceImpl extends BaseVoServiceImpl @Autowired private AntrianPasienDiPeriksaDao antrianPasienDiPeriksaDao; - @Autowired - private RegistrasiPelayananPasienDao registrasiPelayananPasienDao; - @Autowired private PasienDaftarDao pasienDaftarDao; @@ -184,9 +158,6 @@ public class RegistrasiPasienOnlineServiceImpl extends BaseVoServiceImpl @Autowired private PasienService pasienService; - @Autowired - private AgamaDao agamaDao; - @Autowired private PasienDao pasienDao; @@ -293,14 +264,12 @@ public class RegistrasiPasienOnlineServiceImpl extends BaseVoServiceImpl model.setStatusPerkawinan( statusPerkawinanConverter.transferVOToModel(vo.getStatusPerkawinan(), new StatusPerkawinan())); } - //add by askur 04102016 + // add by askur 04102016 if (CommonUtil.isNotNullOrEmpty(vo.getKebangsaan())) { - model.setKebangsaan( - kebangsaanConverter.transferVOToModel(vo.getKebangsaan(), new Kebangsaan())); + model.setKebangsaan(kebangsaanConverter.transferVOToModel(vo.getKebangsaan(), new Kebangsaan())); } if (CommonUtil.isNotNullOrEmpty(vo.getNegara())) { - model.setNegara( - negaraConverter.transferVOToModel(vo.getNegara(), new Negara())); + model.setNegara(negaraConverter.transferVOToModel(vo.getNegara(), new Negara())); } // UUID noReservasi = UUID.randomUUID(); @@ -310,14 +279,14 @@ public class RegistrasiPasienOnlineServiceImpl extends BaseVoServiceImpl else model.setNoReservasi(noReservasi.toString().substring(1, 8)); AntrianPasienRegistrasi antrianPasienRegistrasi = antrianPasienRegistrasiDao.save(model); - + // no lama - //model.setNoAntrian(antrianPasienRegistrasiDao.getCountByMonthAndYear(model.getTglReservasi())); - + // model.setNoAntrian(antrianPasienRegistrasiDao.getCountByMonthAndYear(model.getTglReservasi())); + // no antrian baru - model.setNoAntrian(antrianPasienRegistrasiDao.getCountByMonthAndYear(model.getTglReservasi(), model.getJenis())); - - + model.setNoAntrian( + antrianPasienRegistrasiDao.getCountByMonthAndYear(model.getTglReservasi(), model.getJenis())); + antrianPasienRegistrasi = antrianPasienRegistrasiDao.save(model); Map result = new HashMap(); if (CommonUtil.isNotNullOrEmpty(antrianPasienRegistrasi)) { @@ -594,7 +563,7 @@ public class RegistrasiPasienOnlineServiceImpl extends BaseVoServiceImpl pasien.setTglDaftar(new Date()); pasien.setNoIdentitas(model.getNoIdentitas()); } - //want to edit by askur 03012017 + // want to edit by askur 03012017 pasien.setNoCm(pasienService.generatePasienCM()); pasien = pasienDao.save(pasien); if (CommonUtil.isNotNullOrEmpty(pasien)) { @@ -739,7 +708,7 @@ public class RegistrasiPasienOnlineServiceImpl extends BaseVoServiceImpl model.setTglLahir(antrianPasienRegistrasi.getTglLahir()); } try { - model = antrianPasienRegistrasiConverter.Clone(antrianPasienRegistrasi, antrianPasienRegistrasi, + model = antrianPasienRegistrasiConverter.clone(antrianPasienRegistrasi, antrianPasienRegistrasi, new String[] { "id" }); } catch (IllegalArgumentException | IllegalAccessException e) { @@ -767,7 +736,7 @@ public class RegistrasiPasienOnlineServiceImpl extends BaseVoServiceImpl Integer ruanganId, String dateStart, String dateEnd, String namaPasien, String noReservasi) { Date startDate = null; Date endDate = null; - + if (CommonUtil.isNotNullOrEmpty(dateStart)) { startDate = DateUtil.toDate(dateStart); } @@ -793,45 +762,41 @@ public class RegistrasiPasienOnlineServiceImpl extends BaseVoServiceImpl if (rowStart < 0) { rowStart = 0; } - + int rowEnd = limit; List antrianPasienRegistrasiList = antrianPasienRegistrasiDaoCustom .findAllAntrianPagingList(rowStart, rowEnd, startDate, endDate, ruanganId, namaPasien, noReservasi); - List gridAntrianPasienDiPeriksaVoList = new ArrayList(); - + for (AntrianPasienRegistrasi model : antrianPasienRegistrasiList) { GridAntrianPasienRegistrasiVO gridAntrianPasienRegistrasiVO = new GridAntrianPasienRegistrasiVO(); gridAntrianPasienRegistrasiVO.setNoAntrian(model.getNoAntrian()); - if(CommonUtil.isNotNullOrEmpty(model.getRuangan())) - { - gridAntrianPasienRegistrasiVO.setRuangan(ruanganConverter.transferModelToVOCustom(model.getRuangan(), - new RuanganVO(), new String[] { "id", "namaRuangan", "kdRuangan" })); - } - else - { + if (CommonUtil.isNotNullOrEmpty(model.getRuangan())) { + gridAntrianPasienRegistrasiVO.setRuangan(ruanganConverter.transferModelToVOCustom(model.getRuangan(), + new RuanganVO(), new String[] { "id", "namaRuangan", "kdRuangan" })); + } else { RuanganVO ruang = new RuanganVO(); ruang.setNamaRuangan(""); ruang.setId(null); ruang.setKdRuangan(null); gridAntrianPasienRegistrasiVO.setRuangan(ruang); } - + if (model.getPegawai() != null) - + gridAntrianPasienRegistrasiVO.setDokter(pegawaiConverter.transferModelToVOCustom(model.getPegawai(), new PegawaiVO(), new String[] { "id", "namaLengkap", "noTlp" })); - + else - + gridAntrianPasienRegistrasiVO.setDokter(new PegawaiVO()); - + if (model.getJenisPasien() != null) - + gridAntrianPasienRegistrasiVO.setKelompokPasien( kelompokPasienConverter.transferModelToVO(model.getJenisPasien(), new KelompokPasienVO())); - + if (model.getIsConfirm() != null && model.getIsConfirm() == true) gridAntrianPasienRegistrasiVO.setStatus("Confirm"); else { @@ -842,7 +807,7 @@ public class RegistrasiPasienOnlineServiceImpl extends BaseVoServiceImpl } else { gridAntrianPasienRegistrasiVO.setStatus("Reservasi"); } - + } gridAntrianPasienRegistrasiVO.setNoReservasi(model.getNoReservasi()); gridAntrianPasienRegistrasiVO.setNoRec(model.getNoRec()); @@ -867,10 +832,10 @@ public class RegistrasiPasienOnlineServiceImpl extends BaseVoServiceImpl gridAntrianPasienDiPeriksaVoList.add(gridAntrianPasienRegistrasiVO); - } + } return constructMapReturn(gridAntrianPasienDiPeriksaVoList, totalRow, totalPages); - + } @Override @@ -923,8 +888,9 @@ public class RegistrasiPasienOnlineServiceImpl extends BaseVoServiceImpl } else gridAntrianPasienRegistrasiVO.setNamaPasien(model.getNamaPasien()); gridAntrianPasienRegistrasiVO.setNoRec(model.getNoRec()); - - if (CommonUtil.isNotNullOrEmpty(model.getTglLahir())) {; + + if (CommonUtil.isNotNullOrEmpty(model.getTglLahir())) { + ; Age age = AgeCalculator.calculateAge(model.getTglLahir()); if (CommonUtil.isNotNullOrEmpty(age)) { gridAntrianPasienRegistrasiVO.setUmur(age.toString()); @@ -979,11 +945,11 @@ public class RegistrasiPasienOnlineServiceImpl extends BaseVoServiceImpl } @Override - public Map getPasienByNoRec(String id) { + public Map getPasienByNoRec(String id) { BaseConverterImpl converter = new BaseConverterImpl<>(); AntrianPasienRegistrasiVO vo = new AntrianPasienRegistrasiVO(); - AntrianPasienRegistrasi data = antrianPasienRegistrasiDaoCustom.findByNoRec(id); - + AntrianPasienRegistrasi data = antrianPasienRegistrasiDaoCustom.findByNoRec(id); + try { return data.ToMap(); } catch (IllegalArgumentException e) { @@ -1002,10 +968,10 @@ public class RegistrasiPasienOnlineServiceImpl extends BaseVoServiceImpl PasienDaftar data = pasienDaftarDao.findByNoRec(id); if (data == null) { AntrianPasienDiPeriksa antrianPasienDiPeriksa = antrianPasienDiPeriksaDao.findOne(id); - if(antrianPasienDiPeriksa==null) + if (antrianPasienDiPeriksa == null) data = pasienDaftarDao.findByNoRec(id); else - data = antrianPasienDiPeriksa.getPasienDaftar(); + data = antrianPasienDiPeriksa.getPasienDaftar(); } Gson gson = new Gson(); String json;