Clean code

Persiapan service split jumlah pelayanan cloning object persistence
This commit is contained in:
Salman Manoe 2023-08-26 23:22:44 +07:00
parent 3002091772
commit 8fb26ced95
2 changed files with 111 additions and 153 deletions

View File

@ -1,22 +1,5 @@
package com.jasamedika.medifirst2000.converter; 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.Gson;
import com.google.gson.GsonBuilder; import com.google.gson.GsonBuilder;
import com.google.gson.TypeAdapter; import com.google.gson.TypeAdapter;
@ -29,6 +12,17 @@ import com.jasamedika.medifirst2000.base.vo.BaseActiveVO;
import com.jasamedika.medifirst2000.converter.base.BaseVoConverter; import com.jasamedika.medifirst2000.converter.base.BaseVoConverter;
import com.jasamedika.medifirst2000.util.ExtendedSpringBeanUtil; import com.jasamedika.medifirst2000.util.ExtendedSpringBeanUtil;
import com.jasamedika.medifirst2000.util.JsonUtil; 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 @Component
public class BaseConverterImpl<T extends BaseActiveVO, T1 extends BaseModel> implements BaseVoConverter<T, T1> { public class BaseConverterImpl<T extends BaseActiveVO, T1 extends BaseModel> implements BaseVoConverter<T, T1> {
@ -80,7 +74,8 @@ public class BaseConverterImpl<T extends BaseActiveVO, T1 extends BaseModel> imp
@Override @Override
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
public <T> TypeAdapter<T> create(Gson gson, TypeToken<T> type) { public <T> TypeAdapter<T> create(Gson gson, TypeToken<T> type) {
return (HibernateProxy.class.isAssignableFrom(type.getRawType()) ? (TypeAdapter<T>) new HibernateProxyTypeAdapter(gson) : null); return (HibernateProxy.class.isAssignableFrom(type.getRawType())
? (TypeAdapter<T>) new HibernateProxyTypeAdapter(gson) : null);
} }
}; };
@ -106,11 +101,11 @@ public class BaseConverterImpl<T extends BaseActiveVO, T1 extends BaseModel> imp
} }
// Retrieve the original (not proxy) class // Retrieve the original (not proxy) class
Class<?> baseType = Hibernate.getClass(value); Class<?> baseType = Hibernate.getClass(value);
// Get the TypeAdapter of the original class, to delegate the serialization // Get the TypeAdapter of the original class, to delegate the
// serialization
TypeAdapter delegate = context.getAdapter(TypeToken.get(baseType)); TypeAdapter delegate = context.getAdapter(TypeToken.get(baseType));
// Get a filled instance of the original class // Get a filled instance of the original class
Object unproxiedValue = ((HibernateProxy) value).getHibernateLazyInitializer() Object unproxiedValue = ((HibernateProxy) value).getHibernateLazyInitializer().getImplementation();
.getImplementation();
// Serialize the value // Serialize the value
delegate.write(out, unproxiedValue); delegate.write(out, unproxiedValue);
} }
@ -249,7 +244,7 @@ public class BaseConverterImpl<T extends BaseActiveVO, T1 extends BaseModel> imp
return vos; 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<String> fieldsToInclude = new ArrayList<String>(); List<String> fieldsToInclude = new ArrayList<String>();
for (Field field : model.GetFields(model.getClass())) { for (Field field : model.GetFields(model.getClass())) {
@ -268,30 +263,26 @@ public class BaseConverterImpl<T extends BaseActiveVO, T1 extends BaseModel> imp
return vo; return vo;
} }
public T1 Clone(T1 model, T1 vo, String[] expected) throws IllegalArgumentException, IllegalAccessException { public T1 clone(T1 model, T1 vo, String[] expected) throws IllegalArgumentException, IllegalAccessException {
for (Field field : BaseModel.GetFields(model.getClass())) {
List<String> fieldsToInclude = new ArrayList<String>();
for (Field field : model.GetFields(model.getClass())) {
String str = field.getName(); String str = field.getName();
Boolean valid = false; boolean valid = false;
for (String key : expected) { for (String key : expected) {
if (str.equals(key)) if (str.equals(key)) {
valid = true; valid = true;
break;
}
} }
if (!valid) { if (!valid) {
try { try {
field.setAccessible(true); field.setAccessible(true);
Object obj = field.get(model); Object obj = field.get(model);
field.set(vo, obj); field.set(vo, obj);
} catch (IllegalArgumentException | IllegalAccessException e) { } catch (IllegalArgumentException | IllegalAccessException e) {
e.printStackTrace(); e.printStackTrace();
} }
} }
fieldsToInclude.add(str);
} }
return vo; return vo;
} }
@ -320,7 +311,8 @@ public class BaseConverterImpl<T extends BaseActiveVO, T1 extends BaseModel> imp
else else
gson = new GsonBuilder().excludeFieldsWithoutExposeAnnotation() gson = new GsonBuilder().excludeFieldsWithoutExposeAnnotation()
.setDateFormat("yyyy-MM-dd HH:mm:ss.SSS").create(); .setDateFormat("yyyy-MM-dd HH:mm:ss.SSS").create();
//serialized = model.serialize(fieldsToInclude.toArray(new String[0]), model.getClass().getName()); // serialized = model.serialize(fieldsToInclude.toArray(new
// String[0]), model.getClass().getName());
String json = gson.toJson(ToMap(model)); String json = gson.toJson(ToMap(model));
gson = new GsonBuilder()// .excludeFieldsWithoutExposeAnnotation() gson = new GsonBuilder()// .excludeFieldsWithoutExposeAnnotation()
.setDateFormat("yyyy-MM-dd HH:mm:ss.SSS").create(); .setDateFormat("yyyy-MM-dd HH:mm:ss.SSS").create();

View File

@ -9,7 +9,6 @@ import java.util.Map;
import java.util.UUID; import java.util.UUID;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.orm.jpa.JpaSystemException; import org.springframework.orm.jpa.JpaSystemException;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; 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.AgamaConverter;
import com.jasamedika.medifirst2000.converter.AsalRujukanConverter; import com.jasamedika.medifirst2000.converter.AsalRujukanConverter;
import com.jasamedika.medifirst2000.converter.BaseConverterImpl; import com.jasamedika.medifirst2000.converter.BaseConverterImpl;
import com.jasamedika.medifirst2000.converter.DesaKelurahanConverter;
import com.jasamedika.medifirst2000.converter.GolonganDarahConverter; import com.jasamedika.medifirst2000.converter.GolonganDarahConverter;
import com.jasamedika.medifirst2000.converter.HubunganKeluargaConverter;
import com.jasamedika.medifirst2000.converter.JenisKelaminConverter; import com.jasamedika.medifirst2000.converter.JenisKelaminConverter;
import com.jasamedika.medifirst2000.converter.KelompokPasienConverter; import com.jasamedika.medifirst2000.converter.KelompokPasienConverter;
import com.jasamedika.medifirst2000.converter.KotaKabupatenConverter;
import com.jasamedika.medifirst2000.converter.LoginUserConverter; import com.jasamedika.medifirst2000.converter.LoginUserConverter;
import com.jasamedika.medifirst2000.converter.PasienConverter;
import com.jasamedika.medifirst2000.converter.PegawaiConverter; import com.jasamedika.medifirst2000.converter.PegawaiConverter;
import com.jasamedika.medifirst2000.converter.PekerjaanConverter; import com.jasamedika.medifirst2000.converter.PekerjaanConverter;
import com.jasamedika.medifirst2000.converter.PendidikanConverter; 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.PasienDao;
import com.jasamedika.medifirst2000.dao.RegistrasiPelayananPasienDao; import com.jasamedika.medifirst2000.dao.RegistrasiPelayananPasienDao;
import com.jasamedika.medifirst2000.dao.custom.AntrianPasienRegistrasiDaoCustom; 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.Agama;
import com.jasamedika.medifirst2000.entities.Alamat; import com.jasamedika.medifirst2000.entities.Alamat;
import com.jasamedika.medifirst2000.entities.AntrianPasienDiPeriksa; 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.JenisKelamin;
import com.jasamedika.medifirst2000.entities.Kebangsaan; import com.jasamedika.medifirst2000.entities.Kebangsaan;
import com.jasamedika.medifirst2000.entities.KelompokPasien; import com.jasamedika.medifirst2000.entities.KelompokPasien;
import com.jasamedika.medifirst2000.entities.LoginUser;
import com.jasamedika.medifirst2000.entities.Negara; import com.jasamedika.medifirst2000.entities.Negara;
import com.jasamedika.medifirst2000.entities.Pasien; import com.jasamedika.medifirst2000.entities.Pasien;
import com.jasamedika.medifirst2000.entities.PasienDaftar; import com.jasamedika.medifirst2000.entities.PasienDaftar;
import com.jasamedika.medifirst2000.entities.Pegawai; import com.jasamedika.medifirst2000.entities.Pegawai;
import com.jasamedika.medifirst2000.entities.Pekerjaan; import com.jasamedika.medifirst2000.entities.Pekerjaan;
import com.jasamedika.medifirst2000.entities.Pendidikan; import com.jasamedika.medifirst2000.entities.Pendidikan;
import com.jasamedika.medifirst2000.entities.RegistrasiPelayananPasien;
import com.jasamedika.medifirst2000.entities.Ruangan; import com.jasamedika.medifirst2000.entities.Ruangan;
import com.jasamedika.medifirst2000.entities.StatusPerkawinan; import com.jasamedika.medifirst2000.entities.StatusPerkawinan;
import com.jasamedika.medifirst2000.entities.TitlePasien; import com.jasamedika.medifirst2000.entities.TitlePasien;
import com.jasamedika.medifirst2000.enums.StatusAntrianEnum; import com.jasamedika.medifirst2000.enums.StatusAntrianEnum;
import com.jasamedika.medifirst2000.enums.TipePasienEnum; import com.jasamedika.medifirst2000.enums.TipePasienEnum;
import com.jasamedika.medifirst2000.exception.ServiceVOException; import com.jasamedika.medifirst2000.exception.ServiceVOException;
import com.jasamedika.medifirst2000.service.AgamaService;
import com.jasamedika.medifirst2000.service.AntrianPasienDiPeriksaService; import com.jasamedika.medifirst2000.service.AntrianPasienDiPeriksaService;
import com.jasamedika.medifirst2000.service.AntrianPasienRegistrasiService; import com.jasamedika.medifirst2000.service.AntrianPasienRegistrasiService;
import com.jasamedika.medifirst2000.service.KelompokPasienService; 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.AgeCalculator;
import com.jasamedika.medifirst2000.util.CommonUtil; import com.jasamedika.medifirst2000.util.CommonUtil;
import com.jasamedika.medifirst2000.util.DateUtil; import com.jasamedika.medifirst2000.util.DateUtil;
import com.jasamedika.medifirst2000.vo.AgamaVO;
import com.jasamedika.medifirst2000.vo.AntrianPasienRegistrasiVO; import com.jasamedika.medifirst2000.vo.AntrianPasienRegistrasiVO;
import com.jasamedika.medifirst2000.vo.DesaKelurahanVO; import com.jasamedika.medifirst2000.vo.DesaKelurahanVO;
import com.jasamedika.medifirst2000.vo.GridAntrianPasienDiPeriksaVO;
import com.jasamedika.medifirst2000.vo.GridAntrianPasienRegistrasiVO; import com.jasamedika.medifirst2000.vo.GridAntrianPasienRegistrasiVO;
import com.jasamedika.medifirst2000.vo.KebangsaanVO; import com.jasamedika.medifirst2000.vo.KebangsaanVO;
import com.jasamedika.medifirst2000.vo.KelompokPasienVO; import com.jasamedika.medifirst2000.vo.KelompokPasienVO;
@ -115,9 +104,6 @@ public class RegistrasiPasienOnlineServiceImpl extends BaseVoServiceImpl
@Autowired @Autowired
private BaseConverterImpl<PasienVO, Pasien> pasienConverter; private BaseConverterImpl<PasienVO, Pasien> pasienConverter;
@Autowired
private BaseConverterImpl<PasienDaftarVO, PasienDaftar> pasienDaftarConverter;
@Autowired @Autowired
private JenisKelaminConverter jenisKelaminConverter; private JenisKelaminConverter jenisKelaminConverter;
@ -142,24 +128,15 @@ public class RegistrasiPasienOnlineServiceImpl extends BaseVoServiceImpl
@Autowired @Autowired
private RuanganConverter ruanganConverter; private RuanganConverter ruanganConverter;
@Autowired
private LoginUserConverter loginUserConverter;
@Autowired @Autowired
private GolonganDarahConverter golonganDarahConverter; private GolonganDarahConverter golonganDarahConverter;
@Autowired @Autowired
private AntrianPasienRegistrasiService antrianPasienRegistrasiService; private AntrianPasienRegistrasiService antrianPasienRegistrasiService;
@Autowired
private KelompokPasienService kelompokPasienService;
@Autowired @Autowired
private AntrianPasienDiPeriksaService antrianPasienDiPeriksaService; private AntrianPasienDiPeriksaService antrianPasienDiPeriksaService;
@Autowired
private RegistrasiPasienConverter registrasiPasienConverter;
@Autowired @Autowired
private PegawaiConverter pegawaiConverter; private PegawaiConverter pegawaiConverter;
@ -172,9 +149,6 @@ public class RegistrasiPasienOnlineServiceImpl extends BaseVoServiceImpl
@Autowired @Autowired
private AntrianPasienDiPeriksaDao antrianPasienDiPeriksaDao; private AntrianPasienDiPeriksaDao antrianPasienDiPeriksaDao;
@Autowired
private RegistrasiPelayananPasienDao registrasiPelayananPasienDao;
@Autowired @Autowired
private PasienDaftarDao pasienDaftarDao; private PasienDaftarDao pasienDaftarDao;
@ -184,9 +158,6 @@ public class RegistrasiPasienOnlineServiceImpl extends BaseVoServiceImpl
@Autowired @Autowired
private PasienService pasienService; private PasienService pasienService;
@Autowired
private AgamaDao agamaDao;
@Autowired @Autowired
private PasienDao pasienDao; private PasienDao pasienDao;
@ -295,12 +266,10 @@ public class RegistrasiPasienOnlineServiceImpl extends BaseVoServiceImpl
} }
// add by askur 04102016 // add by askur 04102016
if (CommonUtil.isNotNullOrEmpty(vo.getKebangsaan())) { if (CommonUtil.isNotNullOrEmpty(vo.getKebangsaan())) {
model.setKebangsaan( model.setKebangsaan(kebangsaanConverter.transferVOToModel(vo.getKebangsaan(), new Kebangsaan()));
kebangsaanConverter.transferVOToModel(vo.getKebangsaan(), new Kebangsaan()));
} }
if (CommonUtil.isNotNullOrEmpty(vo.getNegara())) { if (CommonUtil.isNotNullOrEmpty(vo.getNegara())) {
model.setNegara( model.setNegara(negaraConverter.transferVOToModel(vo.getNegara(), new Negara()));
negaraConverter.transferVOToModel(vo.getNegara(), new Negara()));
} }
// //
UUID noReservasi = UUID.randomUUID(); UUID noReservasi = UUID.randomUUID();
@ -315,8 +284,8 @@ public class RegistrasiPasienOnlineServiceImpl extends BaseVoServiceImpl
// model.setNoAntrian(antrianPasienRegistrasiDao.getCountByMonthAndYear(model.getTglReservasi())); // model.setNoAntrian(antrianPasienRegistrasiDao.getCountByMonthAndYear(model.getTglReservasi()));
// no antrian baru // no antrian baru
model.setNoAntrian(antrianPasienRegistrasiDao.getCountByMonthAndYear(model.getTglReservasi(), model.getJenis())); model.setNoAntrian(
antrianPasienRegistrasiDao.getCountByMonthAndYear(model.getTglReservasi(), model.getJenis()));
antrianPasienRegistrasi = antrianPasienRegistrasiDao.save(model); antrianPasienRegistrasi = antrianPasienRegistrasiDao.save(model);
Map<String, Object> result = new HashMap<String, Object>(); Map<String, Object> result = new HashMap<String, Object>();
@ -739,7 +708,7 @@ public class RegistrasiPasienOnlineServiceImpl extends BaseVoServiceImpl
model.setTglLahir(antrianPasienRegistrasi.getTglLahir()); model.setTglLahir(antrianPasienRegistrasi.getTglLahir());
} }
try { try {
model = antrianPasienRegistrasiConverter.Clone(antrianPasienRegistrasi, antrianPasienRegistrasi, model = antrianPasienRegistrasiConverter.clone(antrianPasienRegistrasi, antrianPasienRegistrasi,
new String[] { "id" }); new String[] { "id" });
} catch (IllegalArgumentException | IllegalAccessException e) { } catch (IllegalArgumentException | IllegalAccessException e) {
@ -798,19 +767,15 @@ public class RegistrasiPasienOnlineServiceImpl extends BaseVoServiceImpl
List<AntrianPasienRegistrasi> antrianPasienRegistrasiList = antrianPasienRegistrasiDaoCustom List<AntrianPasienRegistrasi> antrianPasienRegistrasiList = antrianPasienRegistrasiDaoCustom
.findAllAntrianPagingList(rowStart, rowEnd, startDate, endDate, ruanganId, namaPasien, noReservasi); .findAllAntrianPagingList(rowStart, rowEnd, startDate, endDate, ruanganId, namaPasien, noReservasi);
List<GridAntrianPasienRegistrasiVO> gridAntrianPasienDiPeriksaVoList = new ArrayList<GridAntrianPasienRegistrasiVO>(); List<GridAntrianPasienRegistrasiVO> gridAntrianPasienDiPeriksaVoList = new ArrayList<GridAntrianPasienRegistrasiVO>();
for (AntrianPasienRegistrasi model : antrianPasienRegistrasiList) { for (AntrianPasienRegistrasi model : antrianPasienRegistrasiList) {
GridAntrianPasienRegistrasiVO gridAntrianPasienRegistrasiVO = new GridAntrianPasienRegistrasiVO(); GridAntrianPasienRegistrasiVO gridAntrianPasienRegistrasiVO = new GridAntrianPasienRegistrasiVO();
gridAntrianPasienRegistrasiVO.setNoAntrian(model.getNoAntrian()); gridAntrianPasienRegistrasiVO.setNoAntrian(model.getNoAntrian());
if(CommonUtil.isNotNullOrEmpty(model.getRuangan())) if (CommonUtil.isNotNullOrEmpty(model.getRuangan())) {
{
gridAntrianPasienRegistrasiVO.setRuangan(ruanganConverter.transferModelToVOCustom(model.getRuangan(), gridAntrianPasienRegistrasiVO.setRuangan(ruanganConverter.transferModelToVOCustom(model.getRuangan(),
new RuanganVO(), new String[] { "id", "namaRuangan", "kdRuangan" })); new RuanganVO(), new String[] { "id", "namaRuangan", "kdRuangan" }));
} } else {
else
{
RuanganVO ruang = new RuanganVO(); RuanganVO ruang = new RuanganVO();
ruang.setNamaRuangan(""); ruang.setNamaRuangan("");
ruang.setId(null); ruang.setId(null);
@ -924,7 +889,8 @@ public class RegistrasiPasienOnlineServiceImpl extends BaseVoServiceImpl
gridAntrianPasienRegistrasiVO.setNamaPasien(model.getNamaPasien()); gridAntrianPasienRegistrasiVO.setNamaPasien(model.getNamaPasien());
gridAntrianPasienRegistrasiVO.setNoRec(model.getNoRec()); gridAntrianPasienRegistrasiVO.setNoRec(model.getNoRec());
if (CommonUtil.isNotNullOrEmpty(model.getTglLahir())) {; if (CommonUtil.isNotNullOrEmpty(model.getTglLahir())) {
;
Age age = AgeCalculator.calculateAge(model.getTglLahir()); Age age = AgeCalculator.calculateAge(model.getTglLahir());
if (CommonUtil.isNotNullOrEmpty(age)) { if (CommonUtil.isNotNullOrEmpty(age)) {
gridAntrianPasienRegistrasiVO.setUmur(age.toString()); gridAntrianPasienRegistrasiVO.setUmur(age.toString());