Merge branch 'master' into prod-deploy

This commit is contained in:
Salman Manoe 2024-02-01 20:30:32 +07:00
commit a5664ae550
96 changed files with 2237 additions and 11075 deletions

View File

@ -19,10 +19,10 @@
<module>../jasamedika-it</module>
<module>../jasamedika-k3kl</module>
<module>../jasamedika-laundry</module>
<module>../jasamedika-pelayanan</module>
<module>../jasamedika-reporting</module>
<module>../jasamedika-sdm</module>
<module>../jasamedika-web</module>
<module>../jasamedika-pelayanan</module>
</modules>
<!-- Default Properties -->
<properties>
@ -65,7 +65,7 @@
<servlet.version>3.0.1</servlet.version>
<commons-fileupload.version>1.3</commons-fileupload.version>
<commons-io.version>2.4</commons-io.version>
<commons-io.version>2.15.1</commons-io.version>
<guava.version>10.0.1</guava.version>
<liquibase-maven-plugin.version>2.0.5</liquibase-maven-plugin.version>

View File

@ -115,7 +115,6 @@
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>${commons-io.version}</version>
<scope>runtime</scope>
</dependency>
<!-- For testing REST -->

View File

@ -1,12 +1,7 @@
package com.jasamedika.medifirst2000.controller;
import java.io.BufferedInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.util.ArrayList;
import com.jasamedika.medifirst2000.vo.custom.BridgeEKlaimVO;
import org.apache.commons.io.IOUtils;
import org.json.JSONException;
import org.json.JSONObject;
import org.springframework.http.MediaType;
@ -15,7 +10,12 @@ import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import com.jasamedika.medifirst2000.vo.custom.BridgeEKlaimVO;
import java.io.BufferedInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.util.ArrayList;
@RestController
@RequestMapping("/e-klaim")
@ -37,7 +37,7 @@ public class BridgingEKlaimController {
os.close();
InputStream in = new BufferedInputStream(con.getInputStream());
String result = org.apache.commons.io.IOUtils.toString(in, "UTF-8");
String result = IOUtils.toString(in, "UTF-8");
ArrayList<BridgeEKlaimVO> ret = new ArrayList<BridgeEKlaimVO>();
try {
@ -137,7 +137,7 @@ public class BridgingEKlaimController {
os.close();
InputStream in = new BufferedInputStream(con.getInputStream());
String result = org.apache.commons.io.IOUtils.toString(in, "UTF-8");
String result = IOUtils.toString(in, "UTF-8");
ArrayList<BridgeEKlaimVO> ret = new ArrayList<BridgeEKlaimVO>();
try {

View File

@ -1,176 +1,32 @@
package com.jasamedika.medifirst2000.interceptor;
import java.lang.reflect.Method;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.core.Authentication;
import org.springframework.web.method.HandlerMethod;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
import com.jasamedika.medifirst2000.constants.Constants;
import com.jasamedika.medifirst2000.dao.LoginUserDao;
import com.jasamedika.medifirst2000.dao.MapLoginUserToRuanganDao;
import com.jasamedika.medifirst2000.dao.MapObjekModulToKelompokUserDao;
import com.jasamedika.medifirst2000.entities.KelompokUser;
import com.jasamedika.medifirst2000.entities.LoginUser;
import com.jasamedika.medifirst2000.entities.MapObjekModulToKelompokUser;
import com.jasamedika.medifirst2000.security.model.AppPermission;
import com.jasamedika.medifirst2000.security.service.TokenAuthenticationService;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.lang.reflect.Method;
/**
* Interceptor class for All annotation method controller @AppPermission
*
*
* @author Roberto
*/
public class AppInterceptor implements HandlerInterceptor {
private final Logger LOG = LoggerFactory.getLogger(AppInterceptor.class);
@Autowired
private TokenAuthenticationService tokenAuthenticationService;
@Autowired
private LoginUserDao loginUserDao;
@Autowired
private MapObjekModulToKelompokUserDao mapObjekModulToKelompokUserDao;
// @Autowired
// private MapLoginUserToRuanganDao mapLoginUserToRuanganDao;
public AppInterceptor() {}
/*
* return true untuk valid permission request ke controller method
* */
@Override
public boolean preHandle(HttpServletRequest request,
HttpServletResponse response, Object handler) throws Exception {
try {
HandlerMethod hm = (HandlerMethod) handler;
Method method = hm.getMethod();
if (method.isAnnotationPresent(AppPermission.class)) {/*
String moduleName = request.getHeader(Constants.HttpHeader.MODULE) == null ? "" : request.getHeader(Constants.HttpHeader.MODULE);
String formName = request.getHeader(Constants.HttpHeader.FORM) == null ? "" : request.getHeader(Constants.HttpHeader.FORM);
String action = request.getHeader(Constants.HttpHeader.ACTION) == null ? "" : request.getHeader(Constants.HttpHeader.ACTION);
String methodName = method.getAnnotation(AppPermission.class)
.value();
Authentication authentication = tokenAuthenticationService
.getAuthentication(request);
String namaUser = authentication.getName();
List<LoginUser> loginUser = loginUserDao.findByNamaUser(namaUser);
if (loginUser.isEmpty()) {
// untuk testing false
// response.addHeader("Access-Control-Expose-Headers", "content-type");
response.setHeader(Constants.MessageInfo.ERROR_MESSAGE, "User "
+ namaUser + " can not access Controller " + methodName);
response.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
return false;
}
// get user login
if (!loginUser.isEmpty()) {
LoginUser user = loginUser.get(0);
// get application modules
KelompokUser role = user.getKelompokUser();
boolean result = false;
if (role != null) {
List<MapObjekModulToKelompokUser> objekModules = mapObjekModulToKelompokUserDao.findByKelompokUser(role.getId());
if (!objekModules.isEmpty()) {
// matching current module to user's module
for (MapObjekModulToKelompokUser module : objekModules) {
if (moduleName.equals(module.getReportDisplay())) {
LOG.info("Module match");
// matching user's action
switch (action.toLowerCase()) {
case "save":
case "simpan":
if (module.getSimpan())
result = true;
break;
case "edit":
case "ubah":
if (module.getEdit())
result = true;
break;
case "print":
case "cetak":
if (module.getCetak())
result = true;
break;
case "delete":
case "hapus":
if (module.getHapus())
result = true;
break;
}
break;
}
}
if (result) {
response.setStatus(HttpServletResponse.SC_OK);
response.setHeader(Constants.MessageInfo.INFO_MESSAGE, "Supervise execution success");
return true;
} else {
response.addHeader("RequireSupervisor", "true");
response.setStatus(HttpServletResponse.SC_FORBIDDEN);
response.setHeader(Constants.MessageInfo.ERROR_MESSAGE, "Action requires supervisor");
return false;
}
} else {
LOG.info("User {} has no access to module application");
response.setStatus(HttpServletResponse.SC_FORBIDDEN);
response.setHeader(Constants.MessageInfo.ERROR_MESSAGE, "User has no access to module application");
return false;
}
} else {
LOG.info("User {} has no role to gain access restricted area", namaUser);
response.setStatus(HttpServletResponse.SC_FORBIDDEN);
response.setHeader(Constants.MessageInfo.ERROR_MESSAGE, "User has no role to gain access restricted area");
return false;
}
} else {
LOG.info("User {} is unauthorized", namaUser);
response.setStatus(HttpServletResponse.SC_FORBIDDEN);
response.setHeader(Constants.MessageInfo.ERROR_MESSAGE, "User is unauthorized");
return false;
}
*/
return true;
}
} catch (Exception e) {
System.out.println("Not Found "+request.getRequestURL());
}
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) {
HandlerMethod hm = (HandlerMethod) handler;
Method method = hm.getMethod();
return true;
}
@Override
public void afterCompletion(HttpServletRequest request,
HttpServletResponse response, Object obj, Exception ex)
throws Exception {
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object obj, Exception ex) {
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response,
Object obj, ModelAndView mav) throws Exception {
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object obj, ModelAndView mav) {
}
}

View File

@ -1,15 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:p="http://www.springframework.org/schema/p"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd">
<bean id="tokenAuthenticationService" class="com.jasamedika.medifirst2000.security.service.TokenAuthenticationService" />
<!-- Configures interceptor -->
<mvc:interceptors>
<bean class="com.jasamedika.medifirst2000.interceptor.AppInterceptor" />
</mvc:interceptors>
</beans>

View File

@ -1,81 +1,124 @@
package com.jasamedika.medifirst2000.dao;
import java.util.List;
import java.util.Map;
import com.jasamedika.medifirst2000.entities.IndikatorKinerja;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.PagingAndSortingRepository;
import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Repository;
import com.jasamedika.medifirst2000.entities.IndikatorKinerja;
import java.util.List;
import java.util.Map;
@Repository("indikatorKinerjaDao")
public interface IndikatorKinerjaDao extends PagingAndSortingRepository<IndikatorKinerja, Integer> {
String strAllIndikatorKinerja = "select new Map(ik.id as id," + "ik.jenisIndikator as jenisIndikatorId,"
@Query("select new Map(ik.id as id," + "ik.jenisIndikator as jenisIndikatorId,"
+ "(case when ik.jenisIndikator = 1 then 'Kuantitas' " + "when ik.jenisIndikator = 2 then 'Kualitas' "
+ "when ik.jenisIndikator = 3 then 'Perilaku' end) as jenisIndikator,"
+ "ik.namaIndikator as namaIndikator," + "si.id as satuanIndikatorId,"
+ "si.satuanIndikator as satuanIndikator," + "ik.statusVerifikasi as isStatusVerifikasi,"
+ "(case when ik.statusVerifikasi is false then 'Belum Verifikasi' "
+ "when ik.statusVerifikasi is true then 'Terverifikasi' end) as statusVerifikasi) "
+ "from IndikatorKinerja ik " + "inner join ik.satuanIndikator si " + "where ik.statusEnabled is true";
String jenisIndikator = " and ik.jenisIndikator = :jenisIndikatorId";
String namaIndikator = " and lower(ik.namaIndikator) like %:namaIndikator%";
String statusVerifikasi = " and ik.statusVerifikasi = :statusVerifikasi";
String sort = " order by ik.jenisIndikator,ik.namaIndikator";
@Query(strAllIndikatorKinerja + sort)
+ "from IndikatorKinerja ik " + "inner join ik.satuanIndikator si " + "where ik.statusEnabled is true"
+ " order by ik.jenisIndikator,ik.namaIndikator")
List<Map<String, Object>> findAllIndikatorKinerja();
@Query(strAllIndikatorKinerja + jenisIndikator + sort)
@Query("select new Map(ik.id as id," + "ik.jenisIndikator as jenisIndikatorId,"
+ "(case when ik.jenisIndikator = 1 then 'Kuantitas' " + "when ik.jenisIndikator = 2 then 'Kualitas' "
+ "when ik.jenisIndikator = 3 then 'Perilaku' end) as jenisIndikator,"
+ "ik.namaIndikator as namaIndikator," + "si.id as satuanIndikatorId,"
+ "si.satuanIndikator as satuanIndikator," + "ik.statusVerifikasi as isStatusVerifikasi,"
+ "(case when ik.statusVerifikasi is false then 'Belum Verifikasi' "
+ "when ik.statusVerifikasi is true then 'Terverifikasi' end) as statusVerifikasi) "
+ "from IndikatorKinerja ik " + "inner join ik.satuanIndikator si " + "where ik.statusEnabled is true"
+ " and ik.jenisIndikator = :jenisIndikatorId" + " order by ik.jenisIndikator,ik.namaIndikator")
List<Map<String, Object>> findAllIndikatorKinerja(@Param("jenisIndikatorId") Integer idJenisIndikator);
@Query(strAllIndikatorKinerja + namaIndikator + sort)
@Query("select new Map(ik.id as id," + "ik.jenisIndikator as jenisIndikatorId,"
+ "(case when ik.jenisIndikator = 1 then 'Kuantitas' " + "when ik.jenisIndikator = 2 then 'Kualitas' "
+ "when ik.jenisIndikator = 3 then 'Perilaku' end) as jenisIndikator,"
+ "ik.namaIndikator as namaIndikator," + "si.id as satuanIndikatorId,"
+ "si.satuanIndikator as satuanIndikator," + "ik.statusVerifikasi as isStatusVerifikasi,"
+ "(case when ik.statusVerifikasi is false then 'Belum Verifikasi' "
+ "when ik.statusVerifikasi is true then 'Terverifikasi' end) as statusVerifikasi) "
+ "from IndikatorKinerja ik " + "inner join ik.satuanIndikator si " + "where ik.statusEnabled is true"
+ " and lower(ik.namaIndikator) like %:namaIndikator%" + " order by ik.jenisIndikator,ik.namaIndikator")
List<Map<String, Object>> findAllIndikatorKinerja(@Param("namaIndikator") String namaIndikator);
@Query(strAllIndikatorKinerja + statusVerifikasi + sort)
@Query("select new Map(ik.id as id," + "ik.jenisIndikator as jenisIndikatorId,"
+ "(case when ik.jenisIndikator = 1 then 'Kuantitas' " + "when ik.jenisIndikator = 2 then 'Kualitas' "
+ "when ik.jenisIndikator = 3 then 'Perilaku' end) as jenisIndikator,"
+ "ik.namaIndikator as namaIndikator," + "si.id as satuanIndikatorId,"
+ "si.satuanIndikator as satuanIndikator," + "ik.statusVerifikasi as isStatusVerifikasi,"
+ "(case when ik.statusVerifikasi is false then 'Belum Verifikasi' "
+ "when ik.statusVerifikasi is true then 'Terverifikasi' end) as statusVerifikasi) "
+ "from IndikatorKinerja ik " + "inner join ik.satuanIndikator si " + "where ik.statusEnabled is true"
+ " and ik.statusVerifikasi = :statusVerifikasi" + " order by ik.jenisIndikator,ik.namaIndikator")
List<Map<String, Object>> findAllIndikatorKinerja(@Param("statusVerifikasi") Boolean statusVerifikasi);
@Query(strAllIndikatorKinerja + jenisIndikator + namaIndikator + sort)
@Query("select new Map(ik.id as id," + "ik.jenisIndikator as jenisIndikatorId,"
+ "(case when ik.jenisIndikator = 1 then 'Kuantitas' " + "when ik.jenisIndikator = 2 then 'Kualitas' "
+ "when ik.jenisIndikator = 3 then 'Perilaku' end) as jenisIndikator,"
+ "ik.namaIndikator as namaIndikator," + "si.id as satuanIndikatorId,"
+ "si.satuanIndikator as satuanIndikator," + "ik.statusVerifikasi as isStatusVerifikasi,"
+ "(case when ik.statusVerifikasi is false then 'Belum Verifikasi' "
+ "when ik.statusVerifikasi is true then 'Terverifikasi' end) as statusVerifikasi) "
+ "from IndikatorKinerja ik " + "inner join ik.satuanIndikator si " + "where ik.statusEnabled is true"
+ " and ik.jenisIndikator = :jenisIndikatorId" + " and lower(ik.namaIndikator) like %:namaIndikator%"
+ " order by ik.jenisIndikator,ik.namaIndikator")
List<Map<String, Object>> findAllIndikatorKinerja(@Param("jenisIndikatorId") Integer idJenisIndikator,
@Param("namaIndikator") String namaIndikator);
@Query(strAllIndikatorKinerja + jenisIndikator + statusVerifikasi + sort)
@Query("select new Map(ik.id as id," + "ik.jenisIndikator as jenisIndikatorId,"
+ "(case when ik.jenisIndikator = 1 then 'Kuantitas' " + "when ik.jenisIndikator = 2 then 'Kualitas' "
+ "when ik.jenisIndikator = 3 then 'Perilaku' end) as jenisIndikator,"
+ "ik.namaIndikator as namaIndikator," + "si.id as satuanIndikatorId,"
+ "si.satuanIndikator as satuanIndikator," + "ik.statusVerifikasi as isStatusVerifikasi,"
+ "(case when ik.statusVerifikasi is false then 'Belum Verifikasi' "
+ "when ik.statusVerifikasi is true then 'Terverifikasi' end) as statusVerifikasi) "
+ "from IndikatorKinerja ik " + "inner join ik.satuanIndikator si " + "where ik.statusEnabled is true"
+ " and ik.jenisIndikator = :jenisIndikatorId" + " and ik.statusVerifikasi = :statusVerifikasi"
+ " order by ik.jenisIndikator,ik.namaIndikator")
List<Map<String, Object>> findAllIndikatorKinerja(@Param("jenisIndikatorId") Integer idJenisIndikator,
@Param("statusVerifikasi") Boolean statusVerifikasi);
@Query(strAllIndikatorKinerja + namaIndikator + statusVerifikasi + sort)
@Query("select new Map(ik.id as id," + "ik.jenisIndikator as jenisIndikatorId,"
+ "(case when ik.jenisIndikator = 1 then 'Kuantitas' " + "when ik.jenisIndikator = 2 then 'Kualitas' "
+ "when ik.jenisIndikator = 3 then 'Perilaku' end) as jenisIndikator,"
+ "ik.namaIndikator as namaIndikator," + "si.id as satuanIndikatorId,"
+ "si.satuanIndikator as satuanIndikator," + "ik.statusVerifikasi as isStatusVerifikasi,"
+ "(case when ik.statusVerifikasi is false then 'Belum Verifikasi' "
+ "when ik.statusVerifikasi is true then 'Terverifikasi' end) as statusVerifikasi) "
+ "from IndikatorKinerja ik " + "inner join ik.satuanIndikator si " + "where ik.statusEnabled is true"
+ " and lower(ik.namaIndikator) like %:namaIndikator%" + " and ik.statusVerifikasi = :statusVerifikasi"
+ " order by ik.jenisIndikator,ik.namaIndikator")
List<Map<String, Object>> findAllIndikatorKinerja(@Param("namaIndikator") String namaIndikator,
@Param("statusVerifikasi") Boolean statusVerifikasi);
@Query(strAllIndikatorKinerja + jenisIndikator + namaIndikator + statusVerifikasi + sort)
@Query("select new Map(ik.id as id," + "ik.jenisIndikator as jenisIndikatorId,"
+ "(case when ik.jenisIndikator = 1 then 'Kuantitas' " + "when ik.jenisIndikator = 2 then 'Kualitas' "
+ "when ik.jenisIndikator = 3 then 'Perilaku' end) as jenisIndikator,"
+ "ik.namaIndikator as namaIndikator," + "si.id as satuanIndikatorId,"
+ "si.satuanIndikator as satuanIndikator," + "ik.statusVerifikasi as isStatusVerifikasi,"
+ "(case when ik.statusVerifikasi is false then 'Belum Verifikasi' "
+ "when ik.statusVerifikasi is true then 'Terverifikasi' end) as statusVerifikasi) "
+ "from IndikatorKinerja ik " + "inner join ik.satuanIndikator si " + "where ik.statusEnabled is true"
+ " and ik.jenisIndikator = :jenisIndikatorId" + " and lower(ik.namaIndikator) like %:namaIndikator%"
+ " and ik.statusVerifikasi = :statusVerifikasi" + " order by ik.jenisIndikator,ik.namaIndikator")
List<Map<String, Object>> findAllIndikatorKinerja(@Param("jenisIndikatorId") Integer idJenisIndikator,
@Param("namaIndikator") String namaIndikator, @Param("statusVerifikasi") Boolean statusVerifikasi);
String strCekDupIndikator = "select ik.id " + "from IndikatorKinerja ik " + "where ik.statusEnabled is true "
+ "and lower(regexp_replace(ik.namaIndikator,:patternText,'','g')) = :namaIndikator";
String idIndikatorLama = " and ik.id <> :indikatorId";
@Query(strCekDupIndikator)
@Query("select ik.id " + "from IndikatorKinerja ik " + "where ik.statusEnabled is true "
+ "and lower(regexp_replace(ik.namaIndikator,:patternText,'','g')) = :namaIndikator")
List<Integer> findDupByName(@Param("patternText") String patternText, @Param("namaIndikator") String namaIndikator);
@Query(strCekDupIndikator + idIndikatorLama)
@Query("select ik.id " + "from IndikatorKinerja ik " + "where ik.statusEnabled is true "
+ "and lower(regexp_replace(ik.namaIndikator,:patternText,'','g')) = :namaIndikator"
+ " and ik.id <> :indikatorId")
List<Integer> findDupByName(@Param("patternText") String patternText, @Param("indikatorId") Integer idIndikator,
@Param("namaIndikator") String namaIndikator);
@Query("select new Map(ik.id as id,ik.namaIndikator as namaIndikator) " + "from IndikatorKinerja ik "
+ "where ik.statusEnabled is true " + "and ik.id in (:listIdIndikator)")
List<Map<String, Object>> findIndikator(@Param("listIdIndikator") List<Integer> listIdIndikator);
@Query("select ik from IndikatorKinerja ik " + "where ik.statusEnabled is true "
+ "and ik.id in (:listIdIndikator)")
List<IndikatorKinerja> findIndikatorById(@Param("listIdIndikator") List<Integer> listIdIndikator);
}

View File

@ -1,14 +1,13 @@
package com.jasamedika.medifirst2000.dao;
import java.util.List;
import java.util.Map;
import com.jasamedika.medifirst2000.entities.Jabatan;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.PagingAndSortingRepository;
import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Repository;
import com.jasamedika.medifirst2000.entities.Jabatan;
import java.util.List;
import java.util.Map;
/**
* Repository class for Jabatan
@ -35,17 +34,14 @@ public interface JabatanDao extends PagingAndSortingRepository<Jabatan, Integer>
@Query("SELECT model from Jabatan model where model.jenisJabatanId = :jenisJabatanId ")
List<Jabatan> getJabatanStruktural(@Param("jenisJabatanId") Integer jenisJabatanId);
String strJabatanByJenis = "SELECT new Map(jb.id as idJabatan, jb.namaJabatan as namaJabatan) from Jabatan jb "
+ "where jb.statusEnabled is true " + "and jb.jenisJabatanId = :jenisJabatanId";
String byUnitKerja = " and jb.unitKerjaId = :unitKerjaId";
String sortNamaJabatan = " order by jb.namaJabatan";
@Query(strJabatanByJenis + sortNamaJabatan)
@Query("SELECT new Map(jb.id as idJabatan, jb.namaJabatan as namaJabatan) from Jabatan jb "
+ "where jb.statusEnabled is true " + "and jb.jenisJabatanId = :jenisJabatanId"
+ " order by jb.namaJabatan")
List<Map<String, Object>> getJabatanByJenisJabatan(@Param("jenisJabatanId") Integer jenisJabatanId);
@Query(strJabatanByJenis + byUnitKerja + sortNamaJabatan)
@Query("SELECT new Map(jb.id as idJabatan, jb.namaJabatan as namaJabatan) from Jabatan jb "
+ "where jb.statusEnabled is true " + "and jb.jenisJabatanId = :jenisJabatanId"
+ " and jb.unitKerjaId = :unitKerjaId" + " order by jb.namaJabatan")
List<Map<String, Object>> findModelJabatanByJenisUnit(@Param("jenisJabatanId") Integer jenisJabatanId,
@Param("unitKerjaId") Integer idUnitKerja);
@ -54,33 +50,37 @@ public interface JabatanDao extends PagingAndSortingRepository<Jabatan, Integer>
+ "and lower(jab.namaJabatan) not like ('plh%')")
List<Map<String, Object>> getListJabatanFungsionalStruktural();
String strDuplikatJabatan = "select new Map(jb.id as id, jb.namaJabatan as namaJabatan) "
@Query("select new Map(jb.id as id, jb.namaJabatan as namaJabatan) "
+ "from Jabatan jb where jb.statusEnabled is true "
+ "and lower(regexp_replace(jb.namaJabatan,'[^0-9a-zA-Z]+', '', 'g')) = :namaJabatan "
+ "and jb.jenisJabatanId = :jenisJabatanId";
String unitKerjaId = " and jb.unitKerjaId = :unitKerjaId";
String notJabatanId = " and jb.id <> :jabatanId";
@Query(strDuplikatJabatan)
+ "and jb.jenisJabatanId = :jenisJabatanId")
List<Map<String, Object>> checkNamaJabatan(@Param("namaJabatan") String namaJabatan,
@Param("jenisJabatanId") Integer jenisJabatanId);
@Query(strDuplikatJabatan + notJabatanId)
@Query("select new Map(jb.id as id, jb.namaJabatan as namaJabatan) "
+ "from Jabatan jb where jb.statusEnabled is true "
+ "and lower(regexp_replace(jb.namaJabatan,'[^0-9a-zA-Z]+', '', 'g')) = :namaJabatan "
+ "and jb.jenisJabatanId = :jenisJabatanId" + " and jb.id <> :jabatanId")
List<Map<String, Object>> checkNamaJabatan(@Param("jabatanId") Integer idJabatan,
@Param("namaJabatan") String namaJabatan, @Param("jenisJabatanId") Integer idJenisJabatan);
@Query(strDuplikatJabatan + unitKerjaId)
@Query("select new Map(jb.id as id, jb.namaJabatan as namaJabatan) "
+ "from Jabatan jb where jb.statusEnabled is true "
+ "and lower(regexp_replace(jb.namaJabatan,'[^0-9a-zA-Z]+', '', 'g')) = :namaJabatan "
+ "and jb.jenisJabatanId = :jenisJabatanId" + " and jb.unitKerjaId = :unitKerjaId")
List<Map<String, Object>> checkNamaJabatan(@Param("namaJabatan") String namaJabatan,
@Param("jenisJabatanId") Integer idJenisJabatan, @Param("unitKerjaId") Integer idUnitKerja);
@Query(strDuplikatJabatan + notJabatanId + unitKerjaId)
@Query("select new Map(jb.id as id, jb.namaJabatan as namaJabatan) "
+ "from Jabatan jb where jb.statusEnabled is true "
+ "and lower(regexp_replace(jb.namaJabatan,'[^0-9a-zA-Z]+', '', 'g')) = :namaJabatan "
+ "and jb.jenisJabatanId = :jenisJabatanId" + " and jb.id <> :jabatanId"
+ " and jb.unitKerjaId = :unitKerjaId")
List<Map<String, Object>> checkNamaJabatan(@Param("jabatanId") Integer idJabatan,
@Param("namaJabatan") String namaJabatan, @Param("jenisJabatanId") Integer idJenisJabatan,
@Param("unitKerjaId") Integer idUnitKerja);
String strJabatan = "select new Map(jb.id as id,jb.namaJabatan as namaJabatan,"
@Query("select new Map(jb.id as id,jb.namaJabatan as namaJabatan,"
+ "jb.levelJabatan as levelJabatan,jb.subLevelJabatan as levelDireksi,"
+ "jj.id as jenisJabatanId,jj.jenisJabatan as jenisJabatan," + "uk.id as unitKerjaId,uk.name as unitKerja,"
+ "el.id as eselonId,el.eselon as eselon,"
@ -89,41 +89,105 @@ public interface JabatanDao extends PagingAndSortingRepository<Jabatan, Integer>
+ "left join jb.unitKerja uk with (uk.id <> 0 and uk.statusEnabled is true) "
+ "left join jb.eselon el with (el.id <> 0 and el.statusEnabled is true) "
+ "left join jb.kelompokJabatan kj with (kj.id between 1 and 10 and kj.statusEnabled is true) "
+ "where jb.statusEnabled is true " + "and jj.statusEnabled is true ";
String namaJabatan = " and lower(jb.namaJabatan) like %:namaJabatan%";
String jenisJabatan = " and jj.id = :jenisJabatanId";
String unitKerja = " and uk.id = :unitKerjaId";
String sortMasterJabatan = " order by jb.namaJabatan, uk.name, jj.jenisJabatan";
@Query(strJabatan + sortMasterJabatan)
+ "where jb.statusEnabled is true " + "and jj.statusEnabled is true "
+ " order by jb.namaJabatan, uk.name, jj.jenisJabatan")
List<Map<String, Object>> findJabatan();
@Query(strJabatan + namaJabatan + sortMasterJabatan)
@Query("select new Map(jb.id as id,jb.namaJabatan as namaJabatan,"
+ "jb.levelJabatan as levelJabatan,jb.subLevelJabatan as levelDireksi,"
+ "jj.id as jenisJabatanId,jj.jenisJabatan as jenisJabatan," + "uk.id as unitKerjaId,uk.name as unitKerja,"
+ "el.id as eselonId,el.eselon as eselon,"
+ "kj.id as kelompokJabatanId,kj.namaKelompokJabatan as kelompokJabatan) " + "from Jabatan jb "
+ "inner join jb.jenisJabatan jj "
+ "left join jb.unitKerja uk with (uk.id <> 0 and uk.statusEnabled is true) "
+ "left join jb.eselon el with (el.id <> 0 and el.statusEnabled is true) "
+ "left join jb.kelompokJabatan kj with (kj.id between 1 and 10 and kj.statusEnabled is true) "
+ "where jb.statusEnabled is true " + "and jj.statusEnabled is true "
+ " and lower(jb.namaJabatan) like %:namaJabatan%" + " order by jb.namaJabatan, uk.name, jj.jenisJabatan")
List<Map<String, Object>> findJabatanByNama(@Param("namaJabatan") String namaJabatan);
@Query(strJabatan + jenisJabatan + sortMasterJabatan)
@Query("select new Map(jb.id as id,jb.namaJabatan as namaJabatan,"
+ "jb.levelJabatan as levelJabatan,jb.subLevelJabatan as levelDireksi,"
+ "jj.id as jenisJabatanId,jj.jenisJabatan as jenisJabatan," + "uk.id as unitKerjaId,uk.name as unitKerja,"
+ "el.id as eselonId,el.eselon as eselon,"
+ "kj.id as kelompokJabatanId,kj.namaKelompokJabatan as kelompokJabatan) " + "from Jabatan jb "
+ "inner join jb.jenisJabatan jj "
+ "left join jb.unitKerja uk with (uk.id <> 0 and uk.statusEnabled is true) "
+ "left join jb.eselon el with (el.id <> 0 and el.statusEnabled is true) "
+ "left join jb.kelompokJabatan kj with (kj.id between 1 and 10 and kj.statusEnabled is true) "
+ "where jb.statusEnabled is true " + "and jj.statusEnabled is true " + " and jj.id = :jenisJabatanId"
+ " order by jb.namaJabatan, uk.name, jj.jenisJabatan")
List<Map<String, Object>> findJabatanByJenis(@Param("jenisJabatanId") Integer idJenisJabatan);
@Query(strJabatan + unitKerja + sortMasterJabatan)
@Query("select new Map(jb.id as id,jb.namaJabatan as namaJabatan,"
+ "jb.levelJabatan as levelJabatan,jb.subLevelJabatan as levelDireksi,"
+ "jj.id as jenisJabatanId,jj.jenisJabatan as jenisJabatan," + "uk.id as unitKerjaId,uk.name as unitKerja,"
+ "el.id as eselonId,el.eselon as eselon,"
+ "kj.id as kelompokJabatanId,kj.namaKelompokJabatan as kelompokJabatan) " + "from Jabatan jb "
+ "inner join jb.jenisJabatan jj "
+ "left join jb.unitKerja uk with (uk.id <> 0 and uk.statusEnabled is true) "
+ "left join jb.eselon el with (el.id <> 0 and el.statusEnabled is true) "
+ "left join jb.kelompokJabatan kj with (kj.id between 1 and 10 and kj.statusEnabled is true) "
+ "where jb.statusEnabled is true " + "and jj.statusEnabled is true " + " and uk.id = :unitKerjaId"
+ " order by jb.namaJabatan, uk.name, jj.jenisJabatan")
List<Map<String, Object>> findJabatanByUnit(@Param("unitKerjaId") Integer idUnitKerja);
@Query(strJabatan + namaJabatan + jenisJabatan + sortMasterJabatan)
@Query("select new Map(jb.id as id,jb.namaJabatan as namaJabatan,"
+ "jb.levelJabatan as levelJabatan,jb.subLevelJabatan as levelDireksi,"
+ "jj.id as jenisJabatanId,jj.jenisJabatan as jenisJabatan," + "uk.id as unitKerjaId,uk.name as unitKerja,"
+ "el.id as eselonId,el.eselon as eselon,"
+ "kj.id as kelompokJabatanId,kj.namaKelompokJabatan as kelompokJabatan) " + "from Jabatan jb "
+ "inner join jb.jenisJabatan jj "
+ "left join jb.unitKerja uk with (uk.id <> 0 and uk.statusEnabled is true) "
+ "left join jb.eselon el with (el.id <> 0 and el.statusEnabled is true) "
+ "left join jb.kelompokJabatan kj with (kj.id between 1 and 10 and kj.statusEnabled is true) "
+ "where jb.statusEnabled is true " + "and jj.statusEnabled is true "
+ " and lower(jb.namaJabatan) like %:namaJabatan%" + " and jj.id = :jenisJabatanId"
+ " order by jb.namaJabatan, uk.name, jj.jenisJabatan")
List<Map<String, Object>> findJabatanByNamaJenis(@Param("namaJabatan") String namaJabatan,
@Param("jenisJabatanId") Integer idJenisJabatan);
@Query(strJabatan + namaJabatan + unitKerja + sortMasterJabatan)
@Query("select new Map(jb.id as id,jb.namaJabatan as namaJabatan,"
+ "jb.levelJabatan as levelJabatan,jb.subLevelJabatan as levelDireksi,"
+ "jj.id as jenisJabatanId,jj.jenisJabatan as jenisJabatan," + "uk.id as unitKerjaId,uk.name as unitKerja,"
+ "el.id as eselonId,el.eselon as eselon,"
+ "kj.id as kelompokJabatanId,kj.namaKelompokJabatan as kelompokJabatan) " + "from Jabatan jb "
+ "inner join jb.jenisJabatan jj "
+ "left join jb.unitKerja uk with (uk.id <> 0 and uk.statusEnabled is true) "
+ "left join jb.eselon el with (el.id <> 0 and el.statusEnabled is true) "
+ "left join jb.kelompokJabatan kj with (kj.id between 1 and 10 and kj.statusEnabled is true) "
+ "where jb.statusEnabled is true " + "and jj.statusEnabled is true "
+ " and lower(jb.namaJabatan) like %:namaJabatan%" + " and uk.id = :unitKerjaId"
+ " order by jb.namaJabatan, uk.name, jj.jenisJabatan")
List<Map<String, Object>> findJabatanByNamaUnit(@Param("namaJabatan") String namaJabatan,
@Param("unitKerjaId") Integer idUnitKerja);
@Query(strJabatan + jenisJabatan + unitKerja + sortMasterJabatan)
@Query("select new Map(jb.id as id,jb.namaJabatan as namaJabatan,"
+ "jb.levelJabatan as levelJabatan,jb.subLevelJabatan as levelDireksi,"
+ "jj.id as jenisJabatanId,jj.jenisJabatan as jenisJabatan," + "uk.id as unitKerjaId,uk.name as unitKerja,"
+ "el.id as eselonId,el.eselon as eselon,"
+ "kj.id as kelompokJabatanId,kj.namaKelompokJabatan as kelompokJabatan) " + "from Jabatan jb "
+ "inner join jb.jenisJabatan jj "
+ "left join jb.unitKerja uk with (uk.id <> 0 and uk.statusEnabled is true) "
+ "left join jb.eselon el with (el.id <> 0 and el.statusEnabled is true) "
+ "left join jb.kelompokJabatan kj with (kj.id between 1 and 10 and kj.statusEnabled is true) "
+ "where jb.statusEnabled is true " + "and jj.statusEnabled is true " + " and jj.id = :jenisJabatanId"
+ " and uk.id = :unitKerjaId" + " order by jb.namaJabatan, uk.name, jj.jenisJabatan")
List<Map<String, Object>> findJabatanByJenisUnit(@Param("jenisJabatanId") Integer idJenisJabatan,
@Param("unitKerjaId") Integer idUnitKerja);
@Query(strJabatan + namaJabatan + jenisJabatan + unitKerja + sortMasterJabatan)
@Query("select new Map(jb.id as id,jb.namaJabatan as namaJabatan,"
+ "jb.levelJabatan as levelJabatan,jb.subLevelJabatan as levelDireksi,"
+ "jj.id as jenisJabatanId,jj.jenisJabatan as jenisJabatan," + "uk.id as unitKerjaId,uk.name as unitKerja,"
+ "el.id as eselonId,el.eselon as eselon,"
+ "kj.id as kelompokJabatanId,kj.namaKelompokJabatan as kelompokJabatan) " + "from Jabatan jb "
+ "inner join jb.jenisJabatan jj "
+ "left join jb.unitKerja uk with (uk.id <> 0 and uk.statusEnabled is true) "
+ "left join jb.eselon el with (el.id <> 0 and el.statusEnabled is true) "
+ "left join jb.kelompokJabatan kj with (kj.id between 1 and 10 and kj.statusEnabled is true) "
+ "where jb.statusEnabled is true " + "and jj.statusEnabled is true "
+ " and lower(jb.namaJabatan) like %:namaJabatan%" + " and jj.id = :jenisJabatanId"
+ " and uk.id = :unitKerjaId" + " order by jb.namaJabatan, uk.name, jj.jenisJabatan")
List<Map<String, Object>> findJabatanByNamaJenisUnit(@Param("namaJabatan") String namaJabatan,
@Param("jenisJabatanId") Integer idJenisJabatan, @Param("unitKerjaId") Integer idUnitKerja);

View File

@ -1,59 +1,65 @@
package com.jasamedika.medifirst2000.dao;
import java.util.List;
import java.util.Map;
import com.jasamedika.medifirst2000.entities.ProdukFarmakologi;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.PagingAndSortingRepository;
import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Repository;
import com.jasamedika.medifirst2000.entities.ProdukFarmakologi;
import java.util.List;
import java.util.Map;
@Repository("produkFarmakologiDao")
public interface ProdukFarmakologiDao extends PagingAndSortingRepository<ProdukFarmakologi, Integer> {
String allProduk = "select new Map(prf.id as produkId,prf.namaProduk as namaProduk,"
@Query("select new Map(prf.id as produkId,prf.namaProduk as namaProduk,"
+ "prf.kdProduk as kdProduk,(case when prf.kdProduk = 1 then 'Pelayanan Pasien (Tarif)' "
+ "when prf.kdProduk = 2 then 'Pelayanan Pasien (Nontarif)' "
+ "when prf.kdProduk = 3 then 'Pelayanan Nonpasien' end) as kodeProduk) " + "from ProdukFarmakologi prf "
+ "where prf.statusEnabled is true";
+ "where prf.statusEnabled is true" + " order by prf.namaProduk, prf.kdProduk asc")
List<Map<String, Object>> findProdukFarmakologi();
String namaProduk = " and lower(prf.namaProduk) like %:namaProduk%";
@Query("select new Map(prf.id as produkId,prf.namaProduk as namaProduk,"
+ "prf.kdProduk as kdProduk,(case when prf.kdProduk = 1 then 'Pelayanan Pasien (Tarif)' "
+ "when prf.kdProduk = 2 then 'Pelayanan Pasien (Nontarif)' "
+ "when prf.kdProduk = 3 then 'Pelayanan Nonpasien' end) as kodeProduk) " + "from ProdukFarmakologi prf "
+ "where prf.statusEnabled is true" + " and lower(prf.namaProduk) like %:namaProduk%"
+ " order by prf.namaProduk, prf.kdProduk asc")
List<Map<String, Object>> findProdukFarmakologiByProduk(@Param("namaProduk") String namaProduk);
String kdProduk = " and prf.kdProduk = :kdProduk";
@Query("select new Map(prf.id as produkId,prf.namaProduk as namaProduk,"
+ "prf.kdProduk as kdProduk,(case when prf.kdProduk = 1 then 'Pelayanan Pasien (Tarif)' "
+ "when prf.kdProduk = 2 then 'Pelayanan Pasien (Nontarif)' "
+ "when prf.kdProduk = 3 then 'Pelayanan Nonpasien' end) as kodeProduk) " + "from ProdukFarmakologi prf "
+ "where prf.statusEnabled is true" + " and prf.kdProduk = :kdProduk"
+ " order by prf.namaProduk, prf.kdProduk asc")
List<Map<String, Object>> findProdukFarmakologiByKdProduk(@Param("kdProduk") Short kdProduk);
String sortAllProduk = " order by prf.namaProduk, prf.kdProduk asc";
String listIdProduk = " and prf.id in (:listProdukId)";
@Query(allProduk + sortAllProduk)
public List<Map<String, Object>> findProdukFarmakologi();
@Query(allProduk + namaProduk + sortAllProduk)
public List<Map<String, Object>> findProdukFarmakologiByProduk(@Param("namaProduk") String namaProduk);
@Query(allProduk + kdProduk + sortAllProduk)
public List<Map<String, Object>> findProdukFarmakologiByKdProduk(@Param("kdProduk") Short kdProduk);
@Query(allProduk + namaProduk + kdProduk + sortAllProduk)
public List<Map<String, Object>> findProdukFarmakologiByProduk(@Param("namaProduk") String namaProduk,
@Query("select new Map(prf.id as produkId,prf.namaProduk as namaProduk,"
+ "prf.kdProduk as kdProduk,(case when prf.kdProduk = 1 then 'Pelayanan Pasien (Tarif)' "
+ "when prf.kdProduk = 2 then 'Pelayanan Pasien (Nontarif)' "
+ "when prf.kdProduk = 3 then 'Pelayanan Nonpasien' end) as kodeProduk) " + "from ProdukFarmakologi prf "
+ "where prf.statusEnabled is true" + " and lower(prf.namaProduk) like %:namaProduk%"
+ " and prf.kdProduk = :kdProduk" + " order by prf.namaProduk, prf.kdProduk asc")
List<Map<String, Object>> findProdukFarmakologiByProduk(@Param("namaProduk") String namaProduk,
@Param("kdProduk") Short kdProduk);
@Query(allProduk + listIdProduk + sortAllProduk)
public List<Map<String, Object>> findProdukFarmakologi(@Param("listProdukId") List<Integer> listIdProduk);
@Query("select new Map(prf.id as produkId,prf.namaProduk as namaProduk,"
+ "prf.kdProduk as kdProduk,(case when prf.kdProduk = 1 then 'Pelayanan Pasien (Tarif)' "
+ "when prf.kdProduk = 2 then 'Pelayanan Pasien (Nontarif)' "
+ "when prf.kdProduk = 3 then 'Pelayanan Nonpasien' end) as kodeProduk) " + "from ProdukFarmakologi prf "
+ "where prf.statusEnabled is true" + " and prf.id in (:listProdukId)"
+ " order by prf.namaProduk, prf.kdProduk asc")
List<Map<String, Object>> findProdukFarmakologi(@Param("listProdukId") List<Integer> listIdProduk);
String dupCheck = "select prf.id from ProdukFarmakologi prf " + "where prf.statusEnabled is true "
+ "and lower(regexp_replace(prf.namaProduk,:patternText,'','g')) = :namaProduk";
@Query("select prf.id from ProdukFarmakologi prf " + "where prf.statusEnabled is true "
+ "and lower(regexp_replace(prf.namaProduk,:patternText,'','g')) = :namaProduk")
List<Integer> findDupProduk(@Param("patternText") String patternText, @Param("namaProduk") String namaProduk);
String notIdProduk = " and prf.id <> :produkId";
@Query(dupCheck)
public List<Integer> findDupProduk(@Param("patternText") String patternText,
@Param("namaProduk") String namaProduk);
@Query(dupCheck + notIdProduk)
public List<Integer> findDupProduk(@Param("patternText") String patternText, @Param("namaProduk") String namaProduk,
@Query("select prf.id from ProdukFarmakologi prf " + "where prf.statusEnabled is true "
+ "and lower(regexp_replace(prf.namaProduk,:patternText,'','g')) = :namaProduk"
+ " and prf.id <> :produkId")
List<Integer> findDupProduk(@Param("patternText") String patternText, @Param("namaProduk") String namaProduk,
@Param("produkId") Integer idProduk);
}

View File

@ -1,14 +1,13 @@
package com.jasamedika.medifirst2000.dao;
import java.util.List;
import java.util.Map;
import com.jasamedika.medifirst2000.entities.ProdukNakes;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.PagingAndSortingRepository;
import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Repository;
import com.jasamedika.medifirst2000.entities.ProdukNakes;
import java.util.List;
import java.util.Map;
/**
* @author salmanoe
@ -17,65 +16,97 @@ import com.jasamedika.medifirst2000.entities.ProdukNakes;
@Repository("produkNakesDao")
public interface ProdukNakesDao extends PagingAndSortingRepository<ProdukNakes, Integer> {
String allProduk = "select new Map(prn.id as produkId,prn.namaProduk as namaProduk," + "prn.kdProduk as kdProduk,"
@Query("select new Map(prn.id as produkId,prn.namaProduk as namaProduk," + "prn.kdProduk as kdProduk,"
+ "(case when prn.kdProduk = 1 then 'Pelayanan Pasien' "
+ "when prn.kdProduk = 2 then 'Pelayanan Nonpasien' end) as kodeProduk,"
+ "prn.profesiId as profesiId,prf.namaProfesi as namaProfesi) " + "from ProdukNakes prn "
+ "left join prn.profesi prf " + "with (prf.statusEnabled is true) " + "where prn.statusEnabled is true";
+ "left join prn.profesi prf " + "with (prf.statusEnabled is true) " + "where prn.statusEnabled is true"
+ " order by prf.namaProfesi, prn.namaProduk, prn.kdProduk asc")
List<Map<String, Object>> findProdukNakes();
String namaProduk = " and lower(prn.namaProduk) like %:namaProduk%";
@Query("select new Map(prn.id as produkId,prn.namaProduk as namaProduk," + "prn.kdProduk as kdProduk,"
+ "(case when prn.kdProduk = 1 then 'Pelayanan Pasien' "
+ "when prn.kdProduk = 2 then 'Pelayanan Nonpasien' end) as kodeProduk,"
+ "prn.profesiId as profesiId,prf.namaProfesi as namaProfesi) " + "from ProdukNakes prn "
+ "left join prn.profesi prf " + "with (prf.statusEnabled is true) " + "where prn.statusEnabled is true"
+ " and lower(prn.namaProduk) like %:namaProduk%"
+ " order by prf.namaProfesi, prn.namaProduk, prn.kdProduk asc")
List<Map<String, Object>> findProdukNakesByProduk(@Param("namaProduk") String namaProduk);
String kdProduk = " and prn.kdProduk = :kdProduk";
@Query("select new Map(prn.id as produkId,prn.namaProduk as namaProduk," + "prn.kdProduk as kdProduk,"
+ "(case when prn.kdProduk = 1 then 'Pelayanan Pasien' "
+ "when prn.kdProduk = 2 then 'Pelayanan Nonpasien' end) as kodeProduk,"
+ "prn.profesiId as profesiId,prf.namaProfesi as namaProfesi) " + "from ProdukNakes prn "
+ "left join prn.profesi prf " + "with (prf.statusEnabled is true) " + "where prn.statusEnabled is true"
+ " and prn.kdProduk = :kdProduk" + " order by prf.namaProfesi, prn.namaProduk, prn.kdProduk asc")
List<Map<String, Object>> findProdukNakesByKdProduk(@Param("kdProduk") Short kdProduk);
String idProfesi = " and prn.profesiId = :profesiId";
@Query("select new Map(prn.id as produkId,prn.namaProduk as namaProduk," + "prn.kdProduk as kdProduk,"
+ "(case when prn.kdProduk = 1 then 'Pelayanan Pasien' "
+ "when prn.kdProduk = 2 then 'Pelayanan Nonpasien' end) as kodeProduk,"
+ "prn.profesiId as profesiId,prf.namaProfesi as namaProfesi) " + "from ProdukNakes prn "
+ "left join prn.profesi prf " + "with (prf.statusEnabled is true) " + "where prn.statusEnabled is true"
+ " and prn.profesiId = :profesiId" + " order by prf.namaProfesi, prn.namaProduk, prn.kdProduk asc")
List<Map<String, Object>> findProdukNakesByProfesi(@Param("profesiId") Integer idProfesi);
String sortAllProduk = " order by prf.namaProfesi, prn.namaProduk, prn.kdProduk asc";
String listIdProduk = " and prn.id in (:listProdukId)";
@Query(allProduk + sortAllProduk)
public List<Map<String, Object>> findProdukNakes();
@Query(allProduk + namaProduk + sortAllProduk)
public List<Map<String, Object>> findProdukNakesByProduk(@Param("namaProduk") String namaProduk);
@Query(allProduk + kdProduk + sortAllProduk)
public List<Map<String, Object>> findProdukNakesByKdProduk(@Param("kdProduk") Short kdProduk);
@Query(allProduk + idProfesi + sortAllProduk)
public List<Map<String, Object>> findProdukNakesByProfesi(@Param("profesiId") Integer idProfesi);
@Query(allProduk + idProfesi + namaProduk + sortAllProduk)
public List<Map<String, Object>> findProdukNakesByProfesi(@Param("profesiId") Integer idProfesi,
@Query("select new Map(prn.id as produkId,prn.namaProduk as namaProduk," + "prn.kdProduk as kdProduk,"
+ "(case when prn.kdProduk = 1 then 'Pelayanan Pasien' "
+ "when prn.kdProduk = 2 then 'Pelayanan Nonpasien' end) as kodeProduk,"
+ "prn.profesiId as profesiId,prf.namaProfesi as namaProfesi) " + "from ProdukNakes prn "
+ "left join prn.profesi prf " + "with (prf.statusEnabled is true) " + "where prn.statusEnabled is true"
+ " and prn.profesiId = :profesiId" + " and lower(prn.namaProduk) like %:namaProduk%"
+ " order by prf.namaProfesi, prn.namaProduk, prn.kdProduk asc")
List<Map<String, Object>> findProdukNakesByProfesi(@Param("profesiId") Integer idProfesi,
@Param("namaProduk") String namaProduk);
@Query(allProduk + idProfesi + kdProduk + sortAllProduk)
public List<Map<String, Object>> findProdukNakesByProfesi(@Param("profesiId") Integer idProfesi,
@Query("select new Map(prn.id as produkId,prn.namaProduk as namaProduk," + "prn.kdProduk as kdProduk,"
+ "(case when prn.kdProduk = 1 then 'Pelayanan Pasien' "
+ "when prn.kdProduk = 2 then 'Pelayanan Nonpasien' end) as kodeProduk,"
+ "prn.profesiId as profesiId,prf.namaProfesi as namaProfesi) " + "from ProdukNakes prn "
+ "left join prn.profesi prf " + "with (prf.statusEnabled is true) " + "where prn.statusEnabled is true"
+ " and prn.profesiId = :profesiId" + " and prn.kdProduk = :kdProduk"
+ " order by prf.namaProfesi, prn.namaProduk, prn.kdProduk asc")
List<Map<String, Object>> findProdukNakesByProfesi(@Param("profesiId") Integer idProfesi,
@Param("kdProduk") Short kdProduk);
@Query(allProduk + namaProduk + kdProduk + sortAllProduk)
public List<Map<String, Object>> findProdukNakesByProduk(@Param("namaProduk") String namaProduk,
@Query("select new Map(prn.id as produkId,prn.namaProduk as namaProduk," + "prn.kdProduk as kdProduk,"
+ "(case when prn.kdProduk = 1 then 'Pelayanan Pasien' "
+ "when prn.kdProduk = 2 then 'Pelayanan Nonpasien' end) as kodeProduk,"
+ "prn.profesiId as profesiId,prf.namaProfesi as namaProfesi) " + "from ProdukNakes prn "
+ "left join prn.profesi prf " + "with (prf.statusEnabled is true) " + "where prn.statusEnabled is true"
+ " and lower(prn.namaProduk) like %:namaProduk%" + " and prn.kdProduk = :kdProduk"
+ " order by prf.namaProfesi, prn.namaProduk, prn.kdProduk asc")
List<Map<String, Object>> findProdukNakesByProduk(@Param("namaProduk") String namaProduk,
@Param("kdProduk") Short kdProduk);
@Query(allProduk + namaProduk + idProfesi + kdProduk + sortAllProduk)
public List<Map<String, Object>> findProdukNakesByProfesi(@Param("namaProduk") String namaProduk,
@Query("select new Map(prn.id as produkId,prn.namaProduk as namaProduk," + "prn.kdProduk as kdProduk,"
+ "(case when prn.kdProduk = 1 then 'Pelayanan Pasien' "
+ "when prn.kdProduk = 2 then 'Pelayanan Nonpasien' end) as kodeProduk,"
+ "prn.profesiId as profesiId,prf.namaProfesi as namaProfesi) " + "from ProdukNakes prn "
+ "left join prn.profesi prf " + "with (prf.statusEnabled is true) " + "where prn.statusEnabled is true"
+ " and lower(prn.namaProduk) like %:namaProduk%" + " and prn.profesiId = :profesiId"
+ " and prn.kdProduk = :kdProduk" + " order by prf.namaProfesi, prn.namaProduk, prn.kdProduk asc")
List<Map<String, Object>> findProdukNakesByProfesi(@Param("namaProduk") String namaProduk,
@Param("profesiId") Integer idProfesi, @Param("kdProduk") Short kdProduk);
@Query(allProduk + listIdProduk + sortAllProduk)
public List<Map<String, Object>> findProdukNakes(@Param("listProdukId") List<Integer> listIdProduk);
@Query("select new Map(prn.id as produkId,prn.namaProduk as namaProduk," + "prn.kdProduk as kdProduk,"
+ "(case when prn.kdProduk = 1 then 'Pelayanan Pasien' "
+ "when prn.kdProduk = 2 then 'Pelayanan Nonpasien' end) as kodeProduk,"
+ "prn.profesiId as profesiId,prf.namaProfesi as namaProfesi) " + "from ProdukNakes prn "
+ "left join prn.profesi prf " + "with (prf.statusEnabled is true) " + "where prn.statusEnabled is true"
+ " and prn.id in (:listProdukId)" + " order by prf.namaProfesi, prn.namaProduk, prn.kdProduk asc")
List<Map<String, Object>> findProdukNakes(@Param("listProdukId") List<Integer> listIdProduk);
String dupCheck = "select prn.id from ProdukNakes prn " + "where prn.statusEnabled is true "
@Query("select prn.id from ProdukNakes prn " + "where prn.statusEnabled is true "
+ "and lower(regexp_replace(prn.namaProduk,:patternText,'','g')) = :namaProduk "
+ "and prn.profesiId = :profesiId";
String notIdProduk = " and prn.id <> :produkId";
@Query(dupCheck)
public List<Integer> findDupProduk(@Param("patternText") String patternText, @Param("namaProduk") String namaProduk,
+ "and prn.profesiId = :profesiId")
List<Integer> findDupProduk(@Param("patternText") String patternText, @Param("namaProduk") String namaProduk,
@Param("profesiId") Integer idProfesi);
@Query(dupCheck + notIdProduk)
public List<Integer> findDupProduk(@Param("patternText") String patternText, @Param("namaProduk") String namaProduk,
@Query("select prn.id from ProdukNakes prn " + "where prn.statusEnabled is true "
+ "and lower(regexp_replace(prn.namaProduk,:patternText,'','g')) = :namaProduk "
+ "and prn.profesiId = :profesiId" + " and prn.id <> :produkId")
List<Integer> findDupProduk(@Param("patternText") String patternText, @Param("namaProduk") String namaProduk,
@Param("profesiId") Integer idProfesi, @Param("produkId") Integer idProduk);
}

View File

@ -1,14 +1,13 @@
package com.jasamedika.medifirst2000.dao;
import java.util.List;
import java.util.Map;
import com.jasamedika.medifirst2000.entities.ProdukPerawat;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.PagingAndSortingRepository;
import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Repository;
import com.jasamedika.medifirst2000.entities.ProdukPerawat;
import java.util.List;
import java.util.Map;
/**
* @author salmanoe
@ -17,47 +16,50 @@ import com.jasamedika.medifirst2000.entities.ProdukPerawat;
@Repository("produkPerawat")
public interface ProdukPerawatDao extends PagingAndSortingRepository<ProdukPerawat, Integer> {
String allProduk = "select new Map(prp.id as id,prp.namaProduk as namaProduk," + "prp.klasifikasi as kdKlasif,"
@Query("select new Map(prp.id as id,prp.namaProduk as namaProduk," + "prp.klasifikasi as kdKlasif,"
+ "(case when prp.klasifikasi = 1 then 'Asuhan' " + "when prp.klasifikasi = 2 then 'Tindakan' "
+ "when prp.klasifikasi = 3 then 'Laporan' end) as klasifikasi) " + "from ProdukPerawat prp "
+ "where prp.statusEnabled is true";
+ "where prp.statusEnabled is true" + " order by prp.klasifikasi, prp.namaProduk asc")
List<Map<String, Object>> findAllActive();
String namaProduk = " and lower(prp.namaProduk) like %:namaProduk%";
@Query("select new Map(prp.id as id,prp.namaProduk as namaProduk," + "prp.klasifikasi as kdKlasif,"
+ "(case when prp.klasifikasi = 1 then 'Asuhan' " + "when prp.klasifikasi = 2 then 'Tindakan' "
+ "when prp.klasifikasi = 3 then 'Laporan' end) as klasifikasi) " + "from ProdukPerawat prp "
+ "where prp.statusEnabled is true" + " and lower(prp.namaProduk) like %:namaProduk%"
+ " order by prp.klasifikasi, prp.namaProduk asc")
List<Map<String, Object>> findAllActive(@Param("namaProduk") String namaProduk);
String kdKlasif = " and prp.klasifikasi = :kdKlasif";
@Query("select new Map(prp.id as id,prp.namaProduk as namaProduk," + "prp.klasifikasi as kdKlasif,"
+ "(case when prp.klasifikasi = 1 then 'Asuhan' " + "when prp.klasifikasi = 2 then 'Tindakan' "
+ "when prp.klasifikasi = 3 then 'Laporan' end) as klasifikasi) " + "from ProdukPerawat prp "
+ "where prp.statusEnabled is true" + " and prp.klasifikasi = :kdKlasif"
+ " order by prp.klasifikasi, prp.namaProduk asc")
List<Map<String, Object>> findAllActive(@Param("kdKlasif") Short kdKlasif);
String listIdProduk = " and prp.id in (:listProdukId)";
@Query("select new Map(prp.id as id,prp.namaProduk as namaProduk," + "prp.klasifikasi as kdKlasif,"
+ "(case when prp.klasifikasi = 1 then 'Asuhan' " + "when prp.klasifikasi = 2 then 'Tindakan' "
+ "when prp.klasifikasi = 3 then 'Laporan' end) as klasifikasi) " + "from ProdukPerawat prp "
+ "where prp.statusEnabled is true" + " and lower(prp.namaProduk) like %:namaProduk%"
+ " and prp.klasifikasi = :kdKlasif" + " order by prp.klasifikasi, prp.namaProduk asc")
List<Map<String, Object>> findAllActive(@Param("namaProduk") String namaProduk, @Param("kdKlasif") Short kdKlasif);
String sortAllProduk = " order by prp.klasifikasi, prp.namaProduk asc";
@Query("select new Map(prp.id as id,prp.namaProduk as namaProduk," + "prp.klasifikasi as kdKlasif,"
+ "(case when prp.klasifikasi = 1 then 'Asuhan' " + "when prp.klasifikasi = 2 then 'Tindakan' "
+ "when prp.klasifikasi = 3 then 'Laporan' end) as klasifikasi) " + "from ProdukPerawat prp "
+ "where prp.statusEnabled is true" + " and prp.id in (:listProdukId)"
+ " order by prp.klasifikasi, prp.namaProduk asc")
List<Map<String, Object>> findProdukPerawat(@Param("listProdukId") List<Integer> listIdProduk);
@Query(allProduk + sortAllProduk)
public List<Map<String, Object>> findAllActive();
@Query(allProduk + namaProduk + sortAllProduk)
public List<Map<String, Object>> findAllActive(@Param("namaProduk") String namaProduk);
@Query(allProduk + kdKlasif + sortAllProduk)
public List<Map<String, Object>> findAllActive(@Param("kdKlasif") Short kdKlasif);
@Query(allProduk + namaProduk + kdKlasif + sortAllProduk)
public List<Map<String, Object>> findAllActive(@Param("namaProduk") String namaProduk,
@Param("kdKlasif") Short kdKlasif);
@Query(allProduk + listIdProduk + sortAllProduk)
public List<Map<String, Object>> findProdukPerawat(@Param("listProdukId") List<Integer> listIdProduk);
String dupCheck = "select prp.id from ProdukPerawat prp " + "where prp.statusEnabled is true "
@Query("select prp.id from ProdukPerawat prp " + "where prp.statusEnabled is true "
+ "and lower(regexp_replace(prp.namaProduk,:patternText,'','g')) = :namaProduk "
+ "and prp.klasifikasi = :kdKlasif";
String notIdProduk = " and prp.id <> :produkId";
@Query(dupCheck)
public List<Integer> findDupProduk(@Param("patternText") String patternText, @Param("namaProduk") String namaProduk,
+ "and prp.klasifikasi = :kdKlasif")
List<Integer> findDupProduk(@Param("patternText") String patternText, @Param("namaProduk") String namaProduk,
@Param("kdKlasif") Short kdKlasif);
@Query(dupCheck + notIdProduk)
public List<Integer> findDupProduk(@Param("patternText") String patternText, @Param("namaProduk") String namaProduk,
@Query("select prp.id from ProdukPerawat prp " + "where prp.statusEnabled is true "
+ "and lower(regexp_replace(prp.namaProduk,:patternText,'','g')) = :namaProduk "
+ "and prp.klasifikasi = :kdKlasif" + " and prp.id <> :produkId")
List<Integer> findDupProduk(@Param("patternText") String patternText, @Param("namaProduk") String namaProduk,
@Param("kdKlasif") Short kdKlasif, @Param("produkId") Integer idProduk);
}

View File

@ -1,14 +1,13 @@
package com.jasamedika.medifirst2000.dao;
import java.util.List;
import java.util.Map;
import com.jasamedika.medifirst2000.entities.SkoringTindakanFarmakologi;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.PagingAndSortingRepository;
import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Repository;
import com.jasamedika.medifirst2000.entities.SkoringTindakanFarmakologi;
import java.util.List;
import java.util.Map;
/**
* @author salmanoe
@ -18,7 +17,7 @@ import com.jasamedika.medifirst2000.entities.SkoringTindakanFarmakologi;
@Repository("skoringTindakanFarmakologiDao")
public interface SkoringTindakanFarmakologiDao extends PagingAndSortingRepository<SkoringTindakanFarmakologi, String> {
String strAllEnabled = "select new Map(stf.noRec as noRec,stf.statusEnabled as statusEnabled,"
@Query("select new Map(stf.noRec as noRec,stf.statusEnabled as statusEnabled,"
+ "stf.skor as skor,stf.statusVerifikasi as kdVerif,"
+ "(case when stf.statusVerifikasi is false then 'Belum Verifikasi' "
+ "when stf.statusVerifikasi is true then 'Terverifikasi' end) as stVerif,"
@ -28,52 +27,81 @@ public interface SkoringTindakanFarmakologiDao extends PagingAndSortingRepositor
+ "when prf.kdProduk = 2 then 'Pelayanan Pasien (Nontarif)' "
+ "when prf.kdProduk = 3 then 'Pelayanan Nonpasien' end) as jenisProduk) "
+ "from SkoringTindakanFarmakologi stf " + "inner join stf.produk prf " + "where stf.statusEnabled is true "
+ "and to_char(stf.tanggalMulaiBerlaku,'yyyy-MM-dd') <= to_char(now(),'yyyy-MM-dd') ";
String produk = "and lower(prf.namaProduk) like %:namaProduk% ";
String statusVerifikasi = "and stf.statusVerifikasi = :isVerif ";
String sortSearch = "order by prf.namaProduk asc, stf.tanggalMulaiBerlaku desc, stf.tanggalPembaharuanData desc";
@Query(strAllEnabled + sortSearch)
+ "and to_char(stf.tanggalMulaiBerlaku,'yyyy-MM-dd') <= to_char(now(),'yyyy-MM-dd') "
+ "order by prf.namaProduk asc, stf.tanggalMulaiBerlaku desc, stf.tanggalPembaharuanData desc")
List<Map<String, Object>> findAllEnabled();
@Query(strAllEnabled + produk + sortSearch)
@Query("select new Map(stf.noRec as noRec,stf.statusEnabled as statusEnabled,"
+ "stf.skor as skor,stf.statusVerifikasi as kdVerif,"
+ "(case when stf.statusVerifikasi is false then 'Belum Verifikasi' "
+ "when stf.statusVerifikasi is true then 'Terverifikasi' end) as stVerif,"
+ "stf.tanggalMulaiBerlaku as tglMulaiBerlaku,stf.tanggalPembaharuanData as tglPembaharuanData,"
+ "prf.id as produkId,prf.namaProduk as namaProduk,"
+ "(case when prf.kdProduk = 1 then 'Pelayanan Pasien (Tarif)' "
+ "when prf.kdProduk = 2 then 'Pelayanan Pasien (Nontarif)' "
+ "when prf.kdProduk = 3 then 'Pelayanan Nonpasien' end) as jenisProduk) "
+ "from SkoringTindakanFarmakologi stf " + "inner join stf.produk prf " + "where stf.statusEnabled is true "
+ "and to_char(stf.tanggalMulaiBerlaku,'yyyy-MM-dd') <= to_char(now(),'yyyy-MM-dd') "
+ "and lower(prf.namaProduk) like %:namaProduk% "
+ "order by prf.namaProduk asc, stf.tanggalMulaiBerlaku desc, stf.tanggalPembaharuanData desc")
List<Map<String, Object>> findAllEnabledByProduk(@Param("namaProduk") String namaProduk);
@Query(strAllEnabled + statusVerifikasi + sortSearch)
@Query("select new Map(stf.noRec as noRec,stf.statusEnabled as statusEnabled,"
+ "stf.skor as skor,stf.statusVerifikasi as kdVerif,"
+ "(case when stf.statusVerifikasi is false then 'Belum Verifikasi' "
+ "when stf.statusVerifikasi is true then 'Terverifikasi' end) as stVerif,"
+ "stf.tanggalMulaiBerlaku as tglMulaiBerlaku,stf.tanggalPembaharuanData as tglPembaharuanData,"
+ "prf.id as produkId,prf.namaProduk as namaProduk,"
+ "(case when prf.kdProduk = 1 then 'Pelayanan Pasien (Tarif)' "
+ "when prf.kdProduk = 2 then 'Pelayanan Pasien (Nontarif)' "
+ "when prf.kdProduk = 3 then 'Pelayanan Nonpasien' end) as jenisProduk) "
+ "from SkoringTindakanFarmakologi stf " + "inner join stf.produk prf " + "where stf.statusEnabled is true "
+ "and to_char(stf.tanggalMulaiBerlaku,'yyyy-MM-dd') <= to_char(now(),'yyyy-MM-dd') "
+ "and stf.statusVerifikasi = :isVerif "
+ "order by prf.namaProduk asc, stf.tanggalMulaiBerlaku desc, stf.tanggalPembaharuanData desc")
List<Map<String, Object>> findAllEnabledByVerif(@Param("isVerif") Boolean isVerif);
@Query(strAllEnabled + produk + statusVerifikasi + sortSearch)
@Query("select new Map(stf.noRec as noRec,stf.statusEnabled as statusEnabled,"
+ "stf.skor as skor,stf.statusVerifikasi as kdVerif,"
+ "(case when stf.statusVerifikasi is false then 'Belum Verifikasi' "
+ "when stf.statusVerifikasi is true then 'Terverifikasi' end) as stVerif,"
+ "stf.tanggalMulaiBerlaku as tglMulaiBerlaku,stf.tanggalPembaharuanData as tglPembaharuanData,"
+ "prf.id as produkId,prf.namaProduk as namaProduk,"
+ "(case when prf.kdProduk = 1 then 'Pelayanan Pasien (Tarif)' "
+ "when prf.kdProduk = 2 then 'Pelayanan Pasien (Nontarif)' "
+ "when prf.kdProduk = 3 then 'Pelayanan Nonpasien' end) as jenisProduk) "
+ "from SkoringTindakanFarmakologi stf " + "inner join stf.produk prf " + "where stf.statusEnabled is true "
+ "and to_char(stf.tanggalMulaiBerlaku,'yyyy-MM-dd') <= to_char(now(),'yyyy-MM-dd') "
+ "and lower(prf.namaProduk) like %:namaProduk% " + "and stf.statusVerifikasi = :isVerif "
+ "order by prf.namaProduk asc, stf.tanggalMulaiBerlaku desc, stf.tanggalPembaharuanData desc")
List<Map<String, Object>> findAllEnabledByProdukVerif(@Param("namaProduk") String namaProduk,
@Param("isVerif") Boolean isVerif);
String strCekDupSkoring = "select stf.noRec from SkoringTindakanFarmakologi stf " + "inner join stf.produk prf "
@Query("select stf.noRec from SkoringTindakanFarmakologi stf " + "inner join stf.produk prf "
+ "where stf.statusEnabled is true "
+ "and lower(regexp_replace(prf.namaProduk,:patternText,'','g')) = :namaProduk ";
String skor = " and stf.skor = :skor";
String tglBerlaku = " and to_char(stf.tanggalMulaiBerlaku,'yyyy-MM-dd') = :tglMulaiBerlaku";
String idSkoring = " and stf.noRec <> :noRec";
String sortTglBerlaku = " order by stf.tanggalMulaiBerlaku desc";
@Query(strCekDupSkoring + skor + sortTglBerlaku)
+ "and lower(regexp_replace(prf.namaProduk,:patternText,'','g')) = :namaProduk " + " and stf.skor = :skor"
+ " order by stf.tanggalMulaiBerlaku desc")
List<String> findLastDupSkoring(@Param("namaProduk") String namaProduk, @Param("skor") Double skor,
@Param("patternText") String patternText);
@Query(strCekDupSkoring + tglBerlaku)
@Query("select stf.noRec from SkoringTindakanFarmakologi stf " + "inner join stf.produk prf "
+ "where stf.statusEnabled is true "
+ "and lower(regexp_replace(prf.namaProduk,:patternText,'','g')) = :namaProduk "
+ " and to_char(stf.tanggalMulaiBerlaku,'yyyy-MM-dd') = :tglMulaiBerlaku")
List<String> findDupSkoring(@Param("namaProduk") String namaProduk,
@Param("tglMulaiBerlaku") String tglMulaiBerlaku, @Param("patternText") String patternText);
@Query(strCekDupSkoring + skor + idSkoring + sortTglBerlaku)
@Query("select stf.noRec from SkoringTindakanFarmakologi stf " + "inner join stf.produk prf "
+ "where stf.statusEnabled is true "
+ "and lower(regexp_replace(prf.namaProduk,:patternText,'','g')) = :namaProduk " + " and stf.skor = :skor"
+ " and stf.noRec <> :noRec" + " order by stf.tanggalMulaiBerlaku desc")
List<String> findLastDupSkoring(@Param("namaProduk") String namaProduk, @Param("skor") Double skor,
@Param("patternText") String patternText, @Param("noRec") String noRec);
@Query(strCekDupSkoring + tglBerlaku + idSkoring)
@Query("select stf.noRec from SkoringTindakanFarmakologi stf " + "inner join stf.produk prf "
+ "where stf.statusEnabled is true "
+ "and lower(regexp_replace(prf.namaProduk,:patternText,'','g')) = :namaProduk "
+ " and to_char(stf.tanggalMulaiBerlaku,'yyyy-MM-dd') = :tglMulaiBerlaku" + " and stf.noRec <> :noRec")
List<String> findDupSkoring(@Param("namaProduk") String namaProduk,
@Param("tglMulaiBerlaku") String tglMulaiBerlaku, @Param("patternText") String patternText,
@Param("noRec") String noRec);

View File

@ -1,19 +1,18 @@
package com.jasamedika.medifirst2000.dao;
import java.util.List;
import java.util.Map;
import com.jasamedika.medifirst2000.entities.SkoringTindakanMedis;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.PagingAndSortingRepository;
import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Repository;
import com.jasamedika.medifirst2000.entities.SkoringTindakanMedis;
import java.util.List;
import java.util.Map;
@Repository("skoringTindakanMedisDao")
public interface SkoringTindakanMedisDao extends PagingAndSortingRepository<SkoringTindakanMedis, String> {
String strAllEnabled = "select new Map(stm.noRec as noRec," + "stm.statusEnabled as statusEnabled,"
@Query("select new Map(stm.noRec as noRec," + "stm.statusEnabled as statusEnabled,"
+ "uk.id as unitKerjaId,uk.name as unitKerja," + "sk.id as kelompokKerjaId,sk.name as kelompokKerja,"
+ "pr.id as produkId,pr.namaProduk as namaProduk," + "stm.detailProduk as detailProduk,"
+ "stm.skor as skor," + "stm.statusVerifikasi as isStatusVerifikasi,"
@ -22,113 +21,285 @@ public interface SkoringTindakanMedisDao extends PagingAndSortingRepository<Skor
+ "stm.tanggalMulaiBerlaku as tglMulaiBerlaku," + "stm.tanggalPembaharuanData as tglPembaharuanData) "
+ "from SkoringTindakanMedis stm " + "inner join stm.produk pr " + "inner join stm.kelompokKerja sk "
+ "inner join sk.unitKerja uk " + "where stm.statusEnabled is true "
+ "and to_char(stm.tanggalMulaiBerlaku,'yyyy-MM-dd') <= to_char(now(),'yyyy-MM-dd')";
String kelompokKerja = " and sk.id in (:listSubunitKerjaId)";
String produk = " and lower(pr.namaProduk) like %:namaProduk%";
String detailProduk = " and lower(stm.detailProduk) like %:detailProduk%";
String statusVerifikasi = " and stm.statusVerifikasi = :isStatusVerifikasi";
String sortSearch = " order by sk.name asc," + "pr.namaProduk asc," + "stm.detailProduk asc, "
+ "stm.tanggalMulaiBerlaku desc, stm.tanggalPembaharuanData desc";
@Query(strAllEnabled + sortSearch)
+ "and to_char(stm.tanggalMulaiBerlaku,'yyyy-MM-dd') <= to_char(now(),'yyyy-MM-dd')"
+ " order by sk.name asc," + "pr.namaProduk asc," + "stm.detailProduk asc, "
+ "stm.tanggalMulaiBerlaku desc, stm.tanggalPembaharuanData desc")
List<Map<String, Object>> findAllEnabled();
@Query(strAllEnabled + kelompokKerja + sortSearch)
@Query("select new Map(stm.noRec as noRec," + "stm.statusEnabled as statusEnabled,"
+ "uk.id as unitKerjaId,uk.name as unitKerja," + "sk.id as kelompokKerjaId,sk.name as kelompokKerja,"
+ "pr.id as produkId,pr.namaProduk as namaProduk," + "stm.detailProduk as detailProduk,"
+ "stm.skor as skor," + "stm.statusVerifikasi as isStatusVerifikasi,"
+ "(case when stm.statusVerifikasi is false then 'Belum Verifikasi' "
+ "when stm.statusVerifikasi is true then 'Terverifikasi' end) as statusVerifikasi,"
+ "stm.tanggalMulaiBerlaku as tglMulaiBerlaku," + "stm.tanggalPembaharuanData as tglPembaharuanData) "
+ "from SkoringTindakanMedis stm " + "inner join stm.produk pr " + "inner join stm.kelompokKerja sk "
+ "inner join sk.unitKerja uk " + "where stm.statusEnabled is true "
+ "and to_char(stm.tanggalMulaiBerlaku,'yyyy-MM-dd') <= to_char(now(),'yyyy-MM-dd')"
+ " and sk.id in (:listSubunitKerjaId)" + " order by sk.name asc," + "pr.namaProduk asc,"
+ "stm.detailProduk asc, " + "stm.tanggalMulaiBerlaku desc, stm.tanggalPembaharuanData desc")
List<Map<String, Object>> findAllEnabledByUnit(@Param("listSubunitKerjaId") List<Integer> listIdKelompokKerja);
@Query(strAllEnabled + produk + sortSearch)
@Query("select new Map(stm.noRec as noRec," + "stm.statusEnabled as statusEnabled,"
+ "uk.id as unitKerjaId,uk.name as unitKerja," + "sk.id as kelompokKerjaId,sk.name as kelompokKerja,"
+ "pr.id as produkId,pr.namaProduk as namaProduk," + "stm.detailProduk as detailProduk,"
+ "stm.skor as skor," + "stm.statusVerifikasi as isStatusVerifikasi,"
+ "(case when stm.statusVerifikasi is false then 'Belum Verifikasi' "
+ "when stm.statusVerifikasi is true then 'Terverifikasi' end) as statusVerifikasi,"
+ "stm.tanggalMulaiBerlaku as tglMulaiBerlaku," + "stm.tanggalPembaharuanData as tglPembaharuanData) "
+ "from SkoringTindakanMedis stm " + "inner join stm.produk pr " + "inner join stm.kelompokKerja sk "
+ "inner join sk.unitKerja uk " + "where stm.statusEnabled is true "
+ "and to_char(stm.tanggalMulaiBerlaku,'yyyy-MM-dd') <= to_char(now(),'yyyy-MM-dd')"
+ " and lower(pr.namaProduk) like %:namaProduk%" + " order by sk.name asc," + "pr.namaProduk asc,"
+ "stm.detailProduk asc, " + "stm.tanggalMulaiBerlaku desc, stm.tanggalPembaharuanData desc")
List<Map<String, Object>> findAllEnabledByProduk(@Param("namaProduk") String namaProduk);
@Query(strAllEnabled + detailProduk + sortSearch)
@Query("select new Map(stm.noRec as noRec," + "stm.statusEnabled as statusEnabled,"
+ "uk.id as unitKerjaId,uk.name as unitKerja," + "sk.id as kelompokKerjaId,sk.name as kelompokKerja,"
+ "pr.id as produkId,pr.namaProduk as namaProduk," + "stm.detailProduk as detailProduk,"
+ "stm.skor as skor," + "stm.statusVerifikasi as isStatusVerifikasi,"
+ "(case when stm.statusVerifikasi is false then 'Belum Verifikasi' "
+ "when stm.statusVerifikasi is true then 'Terverifikasi' end) as statusVerifikasi,"
+ "stm.tanggalMulaiBerlaku as tglMulaiBerlaku," + "stm.tanggalPembaharuanData as tglPembaharuanData) "
+ "from SkoringTindakanMedis stm " + "inner join stm.produk pr " + "inner join stm.kelompokKerja sk "
+ "inner join sk.unitKerja uk " + "where stm.statusEnabled is true "
+ "and to_char(stm.tanggalMulaiBerlaku,'yyyy-MM-dd') <= to_char(now(),'yyyy-MM-dd')"
+ " and lower(stm.detailProduk) like %:detailProduk%" + " order by sk.name asc," + "pr.namaProduk asc,"
+ "stm.detailProduk asc, " + "stm.tanggalMulaiBerlaku desc, stm.tanggalPembaharuanData desc")
List<Map<String, Object>> findAllEnabledByDetail(@Param("detailProduk") String detailProduk);
@Query(strAllEnabled + statusVerifikasi + sortSearch)
@Query("select new Map(stm.noRec as noRec," + "stm.statusEnabled as statusEnabled,"
+ "uk.id as unitKerjaId,uk.name as unitKerja," + "sk.id as kelompokKerjaId,sk.name as kelompokKerja,"
+ "pr.id as produkId,pr.namaProduk as namaProduk," + "stm.detailProduk as detailProduk,"
+ "stm.skor as skor," + "stm.statusVerifikasi as isStatusVerifikasi,"
+ "(case when stm.statusVerifikasi is false then 'Belum Verifikasi' "
+ "when stm.statusVerifikasi is true then 'Terverifikasi' end) as statusVerifikasi,"
+ "stm.tanggalMulaiBerlaku as tglMulaiBerlaku," + "stm.tanggalPembaharuanData as tglPembaharuanData) "
+ "from SkoringTindakanMedis stm " + "inner join stm.produk pr " + "inner join stm.kelompokKerja sk "
+ "inner join sk.unitKerja uk " + "where stm.statusEnabled is true "
+ "and to_char(stm.tanggalMulaiBerlaku,'yyyy-MM-dd') <= to_char(now(),'yyyy-MM-dd')"
+ " and stm.statusVerifikasi = :isStatusVerifikasi" + " order by sk.name asc," + "pr.namaProduk asc,"
+ "stm.detailProduk asc, " + "stm.tanggalMulaiBerlaku desc, stm.tanggalPembaharuanData desc")
List<Map<String, Object>> findAllEnabledByVerif(@Param("isStatusVerifikasi") Boolean statusVerifikasi);
@Query(strAllEnabled + kelompokKerja + produk + sortSearch)
@Query("select new Map(stm.noRec as noRec," + "stm.statusEnabled as statusEnabled,"
+ "uk.id as unitKerjaId,uk.name as unitKerja," + "sk.id as kelompokKerjaId,sk.name as kelompokKerja,"
+ "pr.id as produkId,pr.namaProduk as namaProduk," + "stm.detailProduk as detailProduk,"
+ "stm.skor as skor," + "stm.statusVerifikasi as isStatusVerifikasi,"
+ "(case when stm.statusVerifikasi is false then 'Belum Verifikasi' "
+ "when stm.statusVerifikasi is true then 'Terverifikasi' end) as statusVerifikasi,"
+ "stm.tanggalMulaiBerlaku as tglMulaiBerlaku," + "stm.tanggalPembaharuanData as tglPembaharuanData) "
+ "from SkoringTindakanMedis stm " + "inner join stm.produk pr " + "inner join stm.kelompokKerja sk "
+ "inner join sk.unitKerja uk " + "where stm.statusEnabled is true "
+ "and to_char(stm.tanggalMulaiBerlaku,'yyyy-MM-dd') <= to_char(now(),'yyyy-MM-dd')"
+ " and sk.id in (:listSubunitKerjaId)" + " and lower(pr.namaProduk) like %:namaProduk%"
+ " order by sk.name asc," + "pr.namaProduk asc," + "stm.detailProduk asc, "
+ "stm.tanggalMulaiBerlaku desc, stm.tanggalPembaharuanData desc")
List<Map<String, Object>> findAllEnabledByUnitProduk(@Param("listSubunitKerjaId") List<Integer> listIdKelompokKerja,
@Param("namaProduk") String namaProduk);
@Query(strAllEnabled + kelompokKerja + detailProduk + sortSearch)
@Query("select new Map(stm.noRec as noRec," + "stm.statusEnabled as statusEnabled,"
+ "uk.id as unitKerjaId,uk.name as unitKerja," + "sk.id as kelompokKerjaId,sk.name as kelompokKerja,"
+ "pr.id as produkId,pr.namaProduk as namaProduk," + "stm.detailProduk as detailProduk,"
+ "stm.skor as skor," + "stm.statusVerifikasi as isStatusVerifikasi,"
+ "(case when stm.statusVerifikasi is false then 'Belum Verifikasi' "
+ "when stm.statusVerifikasi is true then 'Terverifikasi' end) as statusVerifikasi,"
+ "stm.tanggalMulaiBerlaku as tglMulaiBerlaku," + "stm.tanggalPembaharuanData as tglPembaharuanData) "
+ "from SkoringTindakanMedis stm " + "inner join stm.produk pr " + "inner join stm.kelompokKerja sk "
+ "inner join sk.unitKerja uk " + "where stm.statusEnabled is true "
+ "and to_char(stm.tanggalMulaiBerlaku,'yyyy-MM-dd') <= to_char(now(),'yyyy-MM-dd')"
+ " and sk.id in (:listSubunitKerjaId)" + " and lower(stm.detailProduk) like %:detailProduk%"
+ " order by sk.name asc," + "pr.namaProduk asc," + "stm.detailProduk asc, "
+ "stm.tanggalMulaiBerlaku desc, stm.tanggalPembaharuanData desc")
List<Map<String, Object>> findAllEnabledByUnitDetail(@Param("listSubunitKerjaId") List<Integer> listIdKelompokKerja,
@Param("detailProduk") String detailProduk);
@Query(strAllEnabled + kelompokKerja + statusVerifikasi + sortSearch)
@Query("select new Map(stm.noRec as noRec," + "stm.statusEnabled as statusEnabled,"
+ "uk.id as unitKerjaId,uk.name as unitKerja," + "sk.id as kelompokKerjaId,sk.name as kelompokKerja,"
+ "pr.id as produkId,pr.namaProduk as namaProduk," + "stm.detailProduk as detailProduk,"
+ "stm.skor as skor," + "stm.statusVerifikasi as isStatusVerifikasi,"
+ "(case when stm.statusVerifikasi is false then 'Belum Verifikasi' "
+ "when stm.statusVerifikasi is true then 'Terverifikasi' end) as statusVerifikasi,"
+ "stm.tanggalMulaiBerlaku as tglMulaiBerlaku," + "stm.tanggalPembaharuanData as tglPembaharuanData) "
+ "from SkoringTindakanMedis stm " + "inner join stm.produk pr " + "inner join stm.kelompokKerja sk "
+ "inner join sk.unitKerja uk " + "where stm.statusEnabled is true "
+ "and to_char(stm.tanggalMulaiBerlaku,'yyyy-MM-dd') <= to_char(now(),'yyyy-MM-dd')"
+ " and sk.id in (:listSubunitKerjaId)" + " and stm.statusVerifikasi = :isStatusVerifikasi"
+ " order by sk.name asc," + "pr.namaProduk asc," + "stm.detailProduk asc, "
+ "stm.tanggalMulaiBerlaku desc, stm.tanggalPembaharuanData desc")
List<Map<String, Object>> findAllEnabledByUnitVerif(@Param("listSubunitKerjaId") List<Integer> listIdKelompokKerja,
@Param("isStatusVerifikasi") Boolean statusVerifikasi);
@Query(strAllEnabled + produk + detailProduk + sortSearch)
@Query("select new Map(stm.noRec as noRec," + "stm.statusEnabled as statusEnabled,"
+ "uk.id as unitKerjaId,uk.name as unitKerja," + "sk.id as kelompokKerjaId,sk.name as kelompokKerja,"
+ "pr.id as produkId,pr.namaProduk as namaProduk," + "stm.detailProduk as detailProduk,"
+ "stm.skor as skor," + "stm.statusVerifikasi as isStatusVerifikasi,"
+ "(case when stm.statusVerifikasi is false then 'Belum Verifikasi' "
+ "when stm.statusVerifikasi is true then 'Terverifikasi' end) as statusVerifikasi,"
+ "stm.tanggalMulaiBerlaku as tglMulaiBerlaku," + "stm.tanggalPembaharuanData as tglPembaharuanData) "
+ "from SkoringTindakanMedis stm " + "inner join stm.produk pr " + "inner join stm.kelompokKerja sk "
+ "inner join sk.unitKerja uk " + "where stm.statusEnabled is true "
+ "and to_char(stm.tanggalMulaiBerlaku,'yyyy-MM-dd') <= to_char(now(),'yyyy-MM-dd')"
+ " and lower(pr.namaProduk) like %:namaProduk%" + " and lower(stm.detailProduk) like %:detailProduk%"
+ " order by sk.name asc," + "pr.namaProduk asc," + "stm.detailProduk asc, "
+ "stm.tanggalMulaiBerlaku desc, stm.tanggalPembaharuanData desc")
List<Map<String, Object>> findAllEnabledByProdukDetail(@Param("namaProduk") String namaProduk,
@Param("detailProduk") String detailProduk);
@Query(strAllEnabled + produk + statusVerifikasi + sortSearch)
@Query("select new Map(stm.noRec as noRec," + "stm.statusEnabled as statusEnabled,"
+ "uk.id as unitKerjaId,uk.name as unitKerja," + "sk.id as kelompokKerjaId,sk.name as kelompokKerja,"
+ "pr.id as produkId,pr.namaProduk as namaProduk," + "stm.detailProduk as detailProduk,"
+ "stm.skor as skor," + "stm.statusVerifikasi as isStatusVerifikasi,"
+ "(case when stm.statusVerifikasi is false then 'Belum Verifikasi' "
+ "when stm.statusVerifikasi is true then 'Terverifikasi' end) as statusVerifikasi,"
+ "stm.tanggalMulaiBerlaku as tglMulaiBerlaku," + "stm.tanggalPembaharuanData as tglPembaharuanData) "
+ "from SkoringTindakanMedis stm " + "inner join stm.produk pr " + "inner join stm.kelompokKerja sk "
+ "inner join sk.unitKerja uk " + "where stm.statusEnabled is true "
+ "and to_char(stm.tanggalMulaiBerlaku,'yyyy-MM-dd') <= to_char(now(),'yyyy-MM-dd')"
+ " and lower(pr.namaProduk) like %:namaProduk%" + " and stm.statusVerifikasi = :isStatusVerifikasi"
+ " order by sk.name asc," + "pr.namaProduk asc," + "stm.detailProduk asc, "
+ "stm.tanggalMulaiBerlaku desc, stm.tanggalPembaharuanData desc")
List<Map<String, Object>> findAllEnabledByProdukVerif(@Param("namaProduk") String namaProduk,
@Param("isStatusVerifikasi") Boolean statusVerifikasi);
@Query(strAllEnabled + detailProduk + statusVerifikasi + sortSearch)
@Query("select new Map(stm.noRec as noRec," + "stm.statusEnabled as statusEnabled,"
+ "uk.id as unitKerjaId,uk.name as unitKerja," + "sk.id as kelompokKerjaId,sk.name as kelompokKerja,"
+ "pr.id as produkId,pr.namaProduk as namaProduk," + "stm.detailProduk as detailProduk,"
+ "stm.skor as skor," + "stm.statusVerifikasi as isStatusVerifikasi,"
+ "(case when stm.statusVerifikasi is false then 'Belum Verifikasi' "
+ "when stm.statusVerifikasi is true then 'Terverifikasi' end) as statusVerifikasi,"
+ "stm.tanggalMulaiBerlaku as tglMulaiBerlaku," + "stm.tanggalPembaharuanData as tglPembaharuanData) "
+ "from SkoringTindakanMedis stm " + "inner join stm.produk pr " + "inner join stm.kelompokKerja sk "
+ "inner join sk.unitKerja uk " + "where stm.statusEnabled is true "
+ "and to_char(stm.tanggalMulaiBerlaku,'yyyy-MM-dd') <= to_char(now(),'yyyy-MM-dd')"
+ " and lower(stm.detailProduk) like %:detailProduk%" + " and stm.statusVerifikasi = :isStatusVerifikasi"
+ " order by sk.name asc," + "pr.namaProduk asc," + "stm.detailProduk asc, "
+ "stm.tanggalMulaiBerlaku desc, stm.tanggalPembaharuanData desc")
List<Map<String, Object>> findAllEnabledByDetailVerif(@Param("detailProduk") String detailProduk,
@Param("isStatusVerifikasi") Boolean statusVerifikasi);
@Query(strAllEnabled + kelompokKerja + produk + detailProduk + sortSearch)
@Query("select new Map(stm.noRec as noRec," + "stm.statusEnabled as statusEnabled,"
+ "uk.id as unitKerjaId,uk.name as unitKerja," + "sk.id as kelompokKerjaId,sk.name as kelompokKerja,"
+ "pr.id as produkId,pr.namaProduk as namaProduk," + "stm.detailProduk as detailProduk,"
+ "stm.skor as skor," + "stm.statusVerifikasi as isStatusVerifikasi,"
+ "(case when stm.statusVerifikasi is false then 'Belum Verifikasi' "
+ "when stm.statusVerifikasi is true then 'Terverifikasi' end) as statusVerifikasi,"
+ "stm.tanggalMulaiBerlaku as tglMulaiBerlaku," + "stm.tanggalPembaharuanData as tglPembaharuanData) "
+ "from SkoringTindakanMedis stm " + "inner join stm.produk pr " + "inner join stm.kelompokKerja sk "
+ "inner join sk.unitKerja uk " + "where stm.statusEnabled is true "
+ "and to_char(stm.tanggalMulaiBerlaku,'yyyy-MM-dd') <= to_char(now(),'yyyy-MM-dd')"
+ " and sk.id in (:listSubunitKerjaId)" + " and lower(pr.namaProduk) like %:namaProduk%"
+ " and lower(stm.detailProduk) like %:detailProduk%" + " order by sk.name asc," + "pr.namaProduk asc,"
+ "stm.detailProduk asc, " + "stm.tanggalMulaiBerlaku desc, stm.tanggalPembaharuanData desc")
List<Map<String, Object>> findAllEnabledByUnitProdukDetail(
@Param("listSubunitKerjaId") List<Integer> listIdKelompokKerja, @Param("namaProduk") String namaProduk,
@Param("detailProduk") String detailProduk);
@Query(strAllEnabled + kelompokKerja + produk + statusVerifikasi + sortSearch)
@Query("select new Map(stm.noRec as noRec," + "stm.statusEnabled as statusEnabled,"
+ "uk.id as unitKerjaId,uk.name as unitKerja," + "sk.id as kelompokKerjaId,sk.name as kelompokKerja,"
+ "pr.id as produkId,pr.namaProduk as namaProduk," + "stm.detailProduk as detailProduk,"
+ "stm.skor as skor," + "stm.statusVerifikasi as isStatusVerifikasi,"
+ "(case when stm.statusVerifikasi is false then 'Belum Verifikasi' "
+ "when stm.statusVerifikasi is true then 'Terverifikasi' end) as statusVerifikasi,"
+ "stm.tanggalMulaiBerlaku as tglMulaiBerlaku," + "stm.tanggalPembaharuanData as tglPembaharuanData) "
+ "from SkoringTindakanMedis stm " + "inner join stm.produk pr " + "inner join stm.kelompokKerja sk "
+ "inner join sk.unitKerja uk " + "where stm.statusEnabled is true "
+ "and to_char(stm.tanggalMulaiBerlaku,'yyyy-MM-dd') <= to_char(now(),'yyyy-MM-dd')"
+ " and sk.id in (:listSubunitKerjaId)" + " and lower(pr.namaProduk) like %:namaProduk%"
+ " and stm.statusVerifikasi = :isStatusVerifikasi" + " order by sk.name asc," + "pr.namaProduk asc,"
+ "stm.detailProduk asc, " + "stm.tanggalMulaiBerlaku desc, stm.tanggalPembaharuanData desc")
List<Map<String, Object>> findAllEnabledByUnitProdukVerif(
@Param("listSubunitKerjaId") List<Integer> listIdKelompokKerja, @Param("namaProduk") String namaProduk,
@Param("isStatusVerifikasi") Boolean statusVerifikasi);
@Query(strAllEnabled + kelompokKerja + detailProduk + statusVerifikasi + sortSearch)
@Query("select new Map(stm.noRec as noRec," + "stm.statusEnabled as statusEnabled,"
+ "uk.id as unitKerjaId,uk.name as unitKerja," + "sk.id as kelompokKerjaId,sk.name as kelompokKerja,"
+ "pr.id as produkId,pr.namaProduk as namaProduk," + "stm.detailProduk as detailProduk,"
+ "stm.skor as skor," + "stm.statusVerifikasi as isStatusVerifikasi,"
+ "(case when stm.statusVerifikasi is false then 'Belum Verifikasi' "
+ "when stm.statusVerifikasi is true then 'Terverifikasi' end) as statusVerifikasi,"
+ "stm.tanggalMulaiBerlaku as tglMulaiBerlaku," + "stm.tanggalPembaharuanData as tglPembaharuanData) "
+ "from SkoringTindakanMedis stm " + "inner join stm.produk pr " + "inner join stm.kelompokKerja sk "
+ "inner join sk.unitKerja uk " + "where stm.statusEnabled is true "
+ "and to_char(stm.tanggalMulaiBerlaku,'yyyy-MM-dd') <= to_char(now(),'yyyy-MM-dd')"
+ " and sk.id in (:listSubunitKerjaId)" + " and lower(stm.detailProduk) like %:detailProduk%"
+ " and stm.statusVerifikasi = :isStatusVerifikasi" + " order by sk.name asc," + "pr.namaProduk asc,"
+ "stm.detailProduk asc, " + "stm.tanggalMulaiBerlaku desc, stm.tanggalPembaharuanData desc")
List<Map<String, Object>> findAllEnabledByUnitDetailVerif(
@Param("listSubunitKerjaId") List<Integer> listIdKelompokKerja, @Param("detailProduk") String detailProduk,
@Param("isStatusVerifikasi") Boolean statusVerifikasi);
@Query(strAllEnabled + produk + detailProduk + statusVerifikasi + sortSearch)
@Query("select new Map(stm.noRec as noRec," + "stm.statusEnabled as statusEnabled,"
+ "uk.id as unitKerjaId,uk.name as unitKerja," + "sk.id as kelompokKerjaId,sk.name as kelompokKerja,"
+ "pr.id as produkId,pr.namaProduk as namaProduk," + "stm.detailProduk as detailProduk,"
+ "stm.skor as skor," + "stm.statusVerifikasi as isStatusVerifikasi,"
+ "(case when stm.statusVerifikasi is false then 'Belum Verifikasi' "
+ "when stm.statusVerifikasi is true then 'Terverifikasi' end) as statusVerifikasi,"
+ "stm.tanggalMulaiBerlaku as tglMulaiBerlaku," + "stm.tanggalPembaharuanData as tglPembaharuanData) "
+ "from SkoringTindakanMedis stm " + "inner join stm.produk pr " + "inner join stm.kelompokKerja sk "
+ "inner join sk.unitKerja uk " + "where stm.statusEnabled is true "
+ "and to_char(stm.tanggalMulaiBerlaku,'yyyy-MM-dd') <= to_char(now(),'yyyy-MM-dd')"
+ " and lower(pr.namaProduk) like %:namaProduk%" + " and lower(stm.detailProduk) like %:detailProduk%"
+ " and stm.statusVerifikasi = :isStatusVerifikasi" + " order by sk.name asc," + "pr.namaProduk asc,"
+ "stm.detailProduk asc, " + "stm.tanggalMulaiBerlaku desc, stm.tanggalPembaharuanData desc")
List<Map<String, Object>> findAllEnabledByProdukDetailVerif(@Param("namaProduk") String namaProduk,
@Param("detailProduk") String detailProduk, @Param("isStatusVerifikasi") Boolean statusVerifikasi);
@Query(strAllEnabled + kelompokKerja + produk + detailProduk + statusVerifikasi + sortSearch)
@Query("select new Map(stm.noRec as noRec," + "stm.statusEnabled as statusEnabled,"
+ "uk.id as unitKerjaId,uk.name as unitKerja," + "sk.id as kelompokKerjaId,sk.name as kelompokKerja,"
+ "pr.id as produkId,pr.namaProduk as namaProduk," + "stm.detailProduk as detailProduk,"
+ "stm.skor as skor," + "stm.statusVerifikasi as isStatusVerifikasi,"
+ "(case when stm.statusVerifikasi is false then 'Belum Verifikasi' "
+ "when stm.statusVerifikasi is true then 'Terverifikasi' end) as statusVerifikasi,"
+ "stm.tanggalMulaiBerlaku as tglMulaiBerlaku," + "stm.tanggalPembaharuanData as tglPembaharuanData) "
+ "from SkoringTindakanMedis stm " + "inner join stm.produk pr " + "inner join stm.kelompokKerja sk "
+ "inner join sk.unitKerja uk " + "where stm.statusEnabled is true "
+ "and to_char(stm.tanggalMulaiBerlaku,'yyyy-MM-dd') <= to_char(now(),'yyyy-MM-dd')"
+ " and sk.id in (:listSubunitKerjaId)" + " and lower(pr.namaProduk) like %:namaProduk%"
+ " and lower(stm.detailProduk) like %:detailProduk%" + " and stm.statusVerifikasi = :isStatusVerifikasi"
+ " order by sk.name asc," + "pr.namaProduk asc," + "stm.detailProduk asc, "
+ "stm.tanggalMulaiBerlaku desc, stm.tanggalPembaharuanData desc")
List<Map<String, Object>> findAllEnabledByUnitProdukDetailVerif(
@Param("listSubunitKerjaId") List<Integer> listIdKelompokKerja, @Param("namaProduk") String namaProduk,
@Param("detailProduk") String detailProduk, @Param("isStatusVerifikasi") Boolean statusVerifikasi);
String strCekDupSkoring = "select stm.noRec " + "from SkoringTindakanMedis stm " + "inner join stm.produk pd "
@Query("select stm.noRec " + "from SkoringTindakanMedis stm " + "inner join stm.produk pd "
+ "where stm.statusEnabled is true "
+ "and lower(regexp_replace(pd.namaProduk,:patternText,'','g')) = :namaProduk "
+ "and stm.kelompokKerjaId = :kelompokKerjaId "
+ "and lower(regexp_replace(stm.detailProduk,:patternText,'','g')) = :detailProduk";
String skor = " and stm.skor = :skor";
String tglBerlaku = " and to_char(stm.tanggalMulaiBerlaku,'yyyy-MM-dd') = :tglMulaiBerlaku";
String idSkoring = " and stm.noRec <> :noRec";
String sortTglBerlaku = " order by stm.tanggalMulaiBerlaku desc";
@Query(strCekDupSkoring + skor + sortTglBerlaku)
+ "and lower(regexp_replace(stm.detailProduk,:patternText,'','g')) = :detailProduk"
+ " and stm.skor = :skor" + " order by stm.tanggalMulaiBerlaku desc")
List<String> findLastDupSkoring(@Param("namaProduk") String namaProduk,
@Param("kelompokKerjaId") Integer idKelompokKerja, @Param("skor") Double skor,
@Param("patternText") String patternText, @Param("detailProduk") String detailProduk);
@Query(strCekDupSkoring + tglBerlaku)
@Query("select stm.noRec " + "from SkoringTindakanMedis stm " + "inner join stm.produk pd "
+ "where stm.statusEnabled is true "
+ "and lower(regexp_replace(pd.namaProduk,:patternText,'','g')) = :namaProduk "
+ "and stm.kelompokKerjaId = :kelompokKerjaId "
+ "and lower(regexp_replace(stm.detailProduk,:patternText,'','g')) = :detailProduk"
+ " and to_char(stm.tanggalMulaiBerlaku,'yyyy-MM-dd') = :tglMulaiBerlaku")
List<String> findDupSkoring(@Param("namaProduk") String namaProduk,
@Param("kelompokKerjaId") Integer idKelompokKerja, @Param("tglMulaiBerlaku") String tglMulaiBerlaku,
@Param("patternText") String patternText, @Param("detailProduk") String detailProduk);
@Query(strCekDupSkoring + skor + idSkoring + sortTglBerlaku)
@Query("select stm.noRec " + "from SkoringTindakanMedis stm " + "inner join stm.produk pd "
+ "where stm.statusEnabled is true "
+ "and lower(regexp_replace(pd.namaProduk,:patternText,'','g')) = :namaProduk "
+ "and stm.kelompokKerjaId = :kelompokKerjaId "
+ "and lower(regexp_replace(stm.detailProduk,:patternText,'','g')) = :detailProduk"
+ " and stm.skor = :skor" + " and stm.noRec <> :noRec" + " order by stm.tanggalMulaiBerlaku desc")
List<String> findLastDupSkoring(@Param("namaProduk") String namaProduk,
@Param("kelompokKerjaId") Integer idKelompokKerja, @Param("skor") Double skor,
@Param("patternText") String patternText, @Param("detailProduk") String detailProduk,
@Param("noRec") String noRec);
@Query(strCekDupSkoring + tglBerlaku + idSkoring)
@Query("select stm.noRec " + "from SkoringTindakanMedis stm " + "inner join stm.produk pd "
+ "where stm.statusEnabled is true "
+ "and lower(regexp_replace(pd.namaProduk,:patternText,'','g')) = :namaProduk "
+ "and stm.kelompokKerjaId = :kelompokKerjaId "
+ "and lower(regexp_replace(stm.detailProduk,:patternText,'','g')) = :detailProduk"
+ " and to_char(stm.tanggalMulaiBerlaku,'yyyy-MM-dd') = :tglMulaiBerlaku" + " and stm.noRec <> :noRec")
List<String> findDupSkoring(@Param("namaProduk") String namaProduk,
@Param("kelompokKerjaId") Integer idKelompokKerja, @Param("tglMulaiBerlaku") String tglMulaiBerlaku,
@Param("patternText") String patternText, @Param("detailProduk") String detailProduk,
@ -170,17 +341,12 @@ public interface SkoringTindakanMedisDao extends PagingAndSortingRepository<Skor
List<Map<String, Object>> findSkoringLogbookDokter(@Param("bulan") String bulan,
@Param("listPegawaiId") List<Integer> listIdPegawai, @Param("listKsmId") List<Integer> listIdKsm);
String strProdukScored = "select distinct new Map(stm.kelompokKerjaId as kelompokKerjaId, stm.produkId as produkId) "
+ "from SkoringTindakanMedis stm " + "where stm.statusEnabled is true ";
String whrKelompokKerja = "and stm.kelompokKerjaId in (:listKelompokKerjaId) ";
String srtKkProduk = "order by stm.kelompokKerjaId, stm.produkId";
/**
* @return Daftar id produk sudah dilakukan skor remunerasi
*/
@Query(strProdukScored + srtKkProduk)
@Query("select distinct new Map(stm.kelompokKerjaId as kelompokKerjaId, stm.produkId as produkId) "
+ "from SkoringTindakanMedis stm " + "where stm.statusEnabled is true "
+ "order by stm.kelompokKerjaId, stm.produkId")
List<Map<String, Object>> findProdukScored();
/**
@ -188,7 +354,9 @@ public interface SkoringTindakanMedisDao extends PagingAndSortingRepository<Skor
* Daftar ID Kelompok Kerja
* @return Daftar id produk sudah dilakukan skor remunerasi
*/
@Query(strProdukScored + whrKelompokKerja + srtKkProduk)
@Query("select distinct new Map(stm.kelompokKerjaId as kelompokKerjaId, stm.produkId as produkId) "
+ "from SkoringTindakanMedis stm " + "where stm.statusEnabled is true "
+ "and stm.kelompokKerjaId in (:listKelompokKerjaId) " + "order by stm.kelompokKerjaId, stm.produkId")
List<Map<String, Object>> findProdukScored(@Param("listKelompokKerjaId") List<Integer> listIdKelompokKerja);
}

View File

@ -1,21 +1,19 @@
package com.jasamedika.medifirst2000.dao;
import java.util.List;
import java.util.Map;
import com.jasamedika.medifirst2000.entities.SkoringTindakanNakes;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.PagingAndSortingRepository;
import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Repository;
import com.jasamedika.medifirst2000.entities.SkoringTindakanNakes;
import java.util.List;
import java.util.Map;
@Repository("skoringTindakanNakesDao")
public interface SkoringTindakanNakesDao extends PagingAndSortingRepository<SkoringTindakanNakes, String> {
String strAllEnabled = "select new Map(stn.noRec as noRec," + "stn.statusEnabled as statusEnabled,"
+ "stn.skor as skor," + "stn.statusVerifikasi as kdVerif,"
+ "(case when stn.statusVerifikasi is false then 'Belum Verifikasi' "
@Query("select new Map(stn.noRec as noRec," + "stn.statusEnabled as statusEnabled," + "stn.skor as skor,"
+ "stn.statusVerifikasi as kdVerif," + "(case when stn.statusVerifikasi is false then 'Belum Verifikasi' "
+ "when stn.statusVerifikasi is true then 'Terverifikasi' end) as stVerif,"
+ "stn.tanggalMulaiBerlaku as tglMulaiBerlaku," + "stn.tanggalPembaharuanData as tglPembaharuanData,"
+ "prn.id as produkId," + "prn.namaProduk as namaProduk,"
@ -25,71 +23,157 @@ public interface SkoringTindakanNakesDao extends PagingAndSortingRepository<Skor
+ "when pfs.jenisProfesi = 2 then concat(pfs.namaProfesi, ' (Non-PPA)') end) as namaProfesi) "
+ "from SkoringTindakanNakes stn " + "inner join stn.produk prn " + "inner join prn.profesi pfs "
+ "where stn.statusEnabled is true "
+ "and to_char(stn.tanggalMulaiBerlaku,'yyyy-MM-dd') <= to_char(now(),'yyyy-MM-dd') ";
String produk = "and lower(prn.namaProduk) like %:namaProduk% ";
String statusVerifikasi = "and stn.statusVerifikasi = :isVerif ";
String profesi = "and pfs.id = :profesiId ";
String sortSearch = "order by pfs.namaProfesi asc, " + "prn.namaProduk asc, "
+ "stn.tanggalMulaiBerlaku desc, stn.tanggalPembaharuanData desc";
@Query(strAllEnabled + sortSearch)
+ "and to_char(stn.tanggalMulaiBerlaku,'yyyy-MM-dd') <= to_char(now(),'yyyy-MM-dd') "
+ "order by pfs.namaProfesi asc, " + "prn.namaProduk asc, "
+ "stn.tanggalMulaiBerlaku desc, stn.tanggalPembaharuanData desc")
List<Map<String, Object>> findAllEnabled();
@Query(strAllEnabled + produk + sortSearch)
@Query("select new Map(stn.noRec as noRec," + "stn.statusEnabled as statusEnabled," + "stn.skor as skor,"
+ "stn.statusVerifikasi as kdVerif," + "(case when stn.statusVerifikasi is false then 'Belum Verifikasi' "
+ "when stn.statusVerifikasi is true then 'Terverifikasi' end) as stVerif,"
+ "stn.tanggalMulaiBerlaku as tglMulaiBerlaku," + "stn.tanggalPembaharuanData as tglPembaharuanData,"
+ "prn.id as produkId," + "prn.namaProduk as namaProduk,"
+ "(case when prn.kdProduk = 1 then 'Pelayanan Pasien' "
+ "when prn.kdProduk = 2 then 'Nonpelayanan Pasien' end) as jenisProduk," + "pfs.id as profesiId,"
+ "(case when pfs.jenisProfesi = 1 then concat(pfs.namaProfesi, ' (PPA)') "
+ "when pfs.jenisProfesi = 2 then concat(pfs.namaProfesi, ' (Non-PPA)') end) as namaProfesi) "
+ "from SkoringTindakanNakes stn " + "inner join stn.produk prn " + "inner join prn.profesi pfs "
+ "where stn.statusEnabled is true "
+ "and to_char(stn.tanggalMulaiBerlaku,'yyyy-MM-dd') <= to_char(now(),'yyyy-MM-dd') "
+ "and lower(prn.namaProduk) like %:namaProduk% " + "order by pfs.namaProfesi asc, "
+ "prn.namaProduk asc, " + "stn.tanggalMulaiBerlaku desc, stn.tanggalPembaharuanData desc")
List<Map<String, Object>> findAllEnabledByProduk(@Param("namaProduk") String namaProduk);
@Query(strAllEnabled + statusVerifikasi + sortSearch)
@Query("select new Map(stn.noRec as noRec," + "stn.statusEnabled as statusEnabled," + "stn.skor as skor,"
+ "stn.statusVerifikasi as kdVerif," + "(case when stn.statusVerifikasi is false then 'Belum Verifikasi' "
+ "when stn.statusVerifikasi is true then 'Terverifikasi' end) as stVerif,"
+ "stn.tanggalMulaiBerlaku as tglMulaiBerlaku," + "stn.tanggalPembaharuanData as tglPembaharuanData,"
+ "prn.id as produkId," + "prn.namaProduk as namaProduk,"
+ "(case when prn.kdProduk = 1 then 'Pelayanan Pasien' "
+ "when prn.kdProduk = 2 then 'Nonpelayanan Pasien' end) as jenisProduk," + "pfs.id as profesiId,"
+ "(case when pfs.jenisProfesi = 1 then concat(pfs.namaProfesi, ' (PPA)') "
+ "when pfs.jenisProfesi = 2 then concat(pfs.namaProfesi, ' (Non-PPA)') end) as namaProfesi) "
+ "from SkoringTindakanNakes stn " + "inner join stn.produk prn " + "inner join prn.profesi pfs "
+ "where stn.statusEnabled is true "
+ "and to_char(stn.tanggalMulaiBerlaku,'yyyy-MM-dd') <= to_char(now(),'yyyy-MM-dd') "
+ "and stn.statusVerifikasi = :isVerif " + "order by pfs.namaProfesi asc, " + "prn.namaProduk asc, "
+ "stn.tanggalMulaiBerlaku desc, stn.tanggalPembaharuanData desc")
List<Map<String, Object>> findAllEnabledByVerif(@Param("isVerif") Boolean isVerif);
@Query(strAllEnabled + profesi + sortSearch)
@Query("select new Map(stn.noRec as noRec," + "stn.statusEnabled as statusEnabled," + "stn.skor as skor,"
+ "stn.statusVerifikasi as kdVerif," + "(case when stn.statusVerifikasi is false then 'Belum Verifikasi' "
+ "when stn.statusVerifikasi is true then 'Terverifikasi' end) as stVerif,"
+ "stn.tanggalMulaiBerlaku as tglMulaiBerlaku," + "stn.tanggalPembaharuanData as tglPembaharuanData,"
+ "prn.id as produkId," + "prn.namaProduk as namaProduk,"
+ "(case when prn.kdProduk = 1 then 'Pelayanan Pasien' "
+ "when prn.kdProduk = 2 then 'Nonpelayanan Pasien' end) as jenisProduk," + "pfs.id as profesiId,"
+ "(case when pfs.jenisProfesi = 1 then concat(pfs.namaProfesi, ' (PPA)') "
+ "when pfs.jenisProfesi = 2 then concat(pfs.namaProfesi, ' (Non-PPA)') end) as namaProfesi) "
+ "from SkoringTindakanNakes stn " + "inner join stn.produk prn " + "inner join prn.profesi pfs "
+ "where stn.statusEnabled is true "
+ "and to_char(stn.tanggalMulaiBerlaku,'yyyy-MM-dd') <= to_char(now(),'yyyy-MM-dd') "
+ "and pfs.id = :profesiId " + "order by pfs.namaProfesi asc, " + "prn.namaProduk asc, "
+ "stn.tanggalMulaiBerlaku desc, stn.tanggalPembaharuanData desc")
List<Map<String, Object>> findAllEnabledByProfesi(@Param("profesiId") Integer idProfesi);
@Query(strAllEnabled + produk + statusVerifikasi + sortSearch)
@Query("select new Map(stn.noRec as noRec," + "stn.statusEnabled as statusEnabled," + "stn.skor as skor,"
+ "stn.statusVerifikasi as kdVerif," + "(case when stn.statusVerifikasi is false then 'Belum Verifikasi' "
+ "when stn.statusVerifikasi is true then 'Terverifikasi' end) as stVerif,"
+ "stn.tanggalMulaiBerlaku as tglMulaiBerlaku," + "stn.tanggalPembaharuanData as tglPembaharuanData,"
+ "prn.id as produkId," + "prn.namaProduk as namaProduk,"
+ "(case when prn.kdProduk = 1 then 'Pelayanan Pasien' "
+ "when prn.kdProduk = 2 then 'Nonpelayanan Pasien' end) as jenisProduk," + "pfs.id as profesiId,"
+ "(case when pfs.jenisProfesi = 1 then concat(pfs.namaProfesi, ' (PPA)') "
+ "when pfs.jenisProfesi = 2 then concat(pfs.namaProfesi, ' (Non-PPA)') end) as namaProfesi) "
+ "from SkoringTindakanNakes stn " + "inner join stn.produk prn " + "inner join prn.profesi pfs "
+ "where stn.statusEnabled is true "
+ "and to_char(stn.tanggalMulaiBerlaku,'yyyy-MM-dd') <= to_char(now(),'yyyy-MM-dd') "
+ "and lower(prn.namaProduk) like %:namaProduk% " + "and stn.statusVerifikasi = :isVerif "
+ "order by pfs.namaProfesi asc, " + "prn.namaProduk asc, "
+ "stn.tanggalMulaiBerlaku desc, stn.tanggalPembaharuanData desc")
List<Map<String, Object>> findAllEnabledByProdukVerif(@Param("namaProduk") String namaProduk,
@Param("isVerif") Boolean isVerif);
@Query(strAllEnabled + produk + profesi + sortSearch)
@Query("select new Map(stn.noRec as noRec," + "stn.statusEnabled as statusEnabled," + "stn.skor as skor,"
+ "stn.statusVerifikasi as kdVerif," + "(case when stn.statusVerifikasi is false then 'Belum Verifikasi' "
+ "when stn.statusVerifikasi is true then 'Terverifikasi' end) as stVerif,"
+ "stn.tanggalMulaiBerlaku as tglMulaiBerlaku," + "stn.tanggalPembaharuanData as tglPembaharuanData,"
+ "prn.id as produkId," + "prn.namaProduk as namaProduk,"
+ "(case when prn.kdProduk = 1 then 'Pelayanan Pasien' "
+ "when prn.kdProduk = 2 then 'Nonpelayanan Pasien' end) as jenisProduk," + "pfs.id as profesiId,"
+ "(case when pfs.jenisProfesi = 1 then concat(pfs.namaProfesi, ' (PPA)') "
+ "when pfs.jenisProfesi = 2 then concat(pfs.namaProfesi, ' (Non-PPA)') end) as namaProfesi) "
+ "from SkoringTindakanNakes stn " + "inner join stn.produk prn " + "inner join prn.profesi pfs "
+ "where stn.statusEnabled is true "
+ "and to_char(stn.tanggalMulaiBerlaku,'yyyy-MM-dd') <= to_char(now(),'yyyy-MM-dd') "
+ "and lower(prn.namaProduk) like %:namaProduk% " + "and pfs.id = :profesiId "
+ "order by pfs.namaProfesi asc, " + "prn.namaProduk asc, "
+ "stn.tanggalMulaiBerlaku desc, stn.tanggalPembaharuanData desc")
List<Map<String, Object>> findAllEnabledByProdukProfesi(@Param("namaProduk") String namaProduk,
@Param("profesiId") Integer idProfesi);
@Query(strAllEnabled + statusVerifikasi + profesi + sortSearch)
@Query("select new Map(stn.noRec as noRec," + "stn.statusEnabled as statusEnabled," + "stn.skor as skor,"
+ "stn.statusVerifikasi as kdVerif," + "(case when stn.statusVerifikasi is false then 'Belum Verifikasi' "
+ "when stn.statusVerifikasi is true then 'Terverifikasi' end) as stVerif,"
+ "stn.tanggalMulaiBerlaku as tglMulaiBerlaku," + "stn.tanggalPembaharuanData as tglPembaharuanData,"
+ "prn.id as produkId," + "prn.namaProduk as namaProduk,"
+ "(case when prn.kdProduk = 1 then 'Pelayanan Pasien' "
+ "when prn.kdProduk = 2 then 'Nonpelayanan Pasien' end) as jenisProduk," + "pfs.id as profesiId,"
+ "(case when pfs.jenisProfesi = 1 then concat(pfs.namaProfesi, ' (PPA)') "
+ "when pfs.jenisProfesi = 2 then concat(pfs.namaProfesi, ' (Non-PPA)') end) as namaProfesi) "
+ "from SkoringTindakanNakes stn " + "inner join stn.produk prn " + "inner join prn.profesi pfs "
+ "where stn.statusEnabled is true "
+ "and to_char(stn.tanggalMulaiBerlaku,'yyyy-MM-dd') <= to_char(now(),'yyyy-MM-dd') "
+ "and stn.statusVerifikasi = :isVerif " + "and pfs.id = :profesiId " + "order by pfs.namaProfesi asc, "
+ "prn.namaProduk asc, " + "stn.tanggalMulaiBerlaku desc, stn.tanggalPembaharuanData desc")
List<Map<String, Object>> findAllEnabledByVerifProfesi(@Param("isVerif") Boolean isVerif,
@Param("profesiId") Integer idProfesi);
@Query(strAllEnabled + produk + statusVerifikasi + profesi + sortSearch)
@Query("select new Map(stn.noRec as noRec," + "stn.statusEnabled as statusEnabled," + "stn.skor as skor,"
+ "stn.statusVerifikasi as kdVerif," + "(case when stn.statusVerifikasi is false then 'Belum Verifikasi' "
+ "when stn.statusVerifikasi is true then 'Terverifikasi' end) as stVerif,"
+ "stn.tanggalMulaiBerlaku as tglMulaiBerlaku," + "stn.tanggalPembaharuanData as tglPembaharuanData,"
+ "prn.id as produkId," + "prn.namaProduk as namaProduk,"
+ "(case when prn.kdProduk = 1 then 'Pelayanan Pasien' "
+ "when prn.kdProduk = 2 then 'Nonpelayanan Pasien' end) as jenisProduk," + "pfs.id as profesiId,"
+ "(case when pfs.jenisProfesi = 1 then concat(pfs.namaProfesi, ' (PPA)') "
+ "when pfs.jenisProfesi = 2 then concat(pfs.namaProfesi, ' (Non-PPA)') end) as namaProfesi) "
+ "from SkoringTindakanNakes stn " + "inner join stn.produk prn " + "inner join prn.profesi pfs "
+ "where stn.statusEnabled is true "
+ "and to_char(stn.tanggalMulaiBerlaku,'yyyy-MM-dd') <= to_char(now(),'yyyy-MM-dd') "
+ "and lower(prn.namaProduk) like %:namaProduk% " + "and stn.statusVerifikasi = :isVerif "
+ "and pfs.id = :profesiId " + "order by pfs.namaProfesi asc, " + "prn.namaProduk asc, "
+ "stn.tanggalMulaiBerlaku desc, stn.tanggalPembaharuanData desc")
List<Map<String, Object>> findAllEnabledByProdukVerifProfesi(@Param("namaProduk") String namaProduk,
@Param("isVerif") Boolean isVerif, @Param("profesiId") Integer idProfesi);
String strCekDupSkoring = "select stn.noRec " + "from SkoringTindakanNakes stn " + "inner join stn.produk prn "
@Query("select stn.noRec " + "from SkoringTindakanNakes stn " + "inner join stn.produk prn "
+ "inner join prn.profesi pfs " + "where stn.statusEnabled is true "
+ "and lower(regexp_replace(prn.namaProduk,:patternText,'','g')) = :namaProduk "
+ "and pfs.id = :profesiId ";
String skor = " and stn.skor = :skor";
String tglBerlaku = " and to_char(stn.tanggalMulaiBerlaku,'yyyy-MM-dd') = :tglMulaiBerlaku";
String idSkoring = " and stn.noRec <> :noRec";
String sortTglBerlaku = " order by stn.tanggalMulaiBerlaku desc";
@Query(strCekDupSkoring + skor + sortTglBerlaku)
+ "and pfs.id = :profesiId " + " and stn.skor = :skor" + " order by stn.tanggalMulaiBerlaku desc")
List<String> findLastDupSkoring(@Param("namaProduk") String namaProduk, @Param("profesiId") Integer idProfesi,
@Param("skor") Double skor, @Param("patternText") String patternText);
@Query(strCekDupSkoring + tglBerlaku)
@Query("select stn.noRec " + "from SkoringTindakanNakes stn " + "inner join stn.produk prn "
+ "inner join prn.profesi pfs " + "where stn.statusEnabled is true "
+ "and lower(regexp_replace(prn.namaProduk,:patternText,'','g')) = :namaProduk "
+ "and pfs.id = :profesiId " + " and to_char(stn.tanggalMulaiBerlaku,'yyyy-MM-dd') = :tglMulaiBerlaku")
List<String> findDupSkoring(@Param("namaProduk") String namaProduk, @Param("profesiId") Integer idProfesi,
@Param("tglMulaiBerlaku") String tglMulaiBerlaku, @Param("patternText") String patternText);
@Query(strCekDupSkoring + skor + idSkoring + sortTglBerlaku)
@Query("select stn.noRec " + "from SkoringTindakanNakes stn " + "inner join stn.produk prn "
+ "inner join prn.profesi pfs " + "where stn.statusEnabled is true "
+ "and lower(regexp_replace(prn.namaProduk,:patternText,'','g')) = :namaProduk "
+ "and pfs.id = :profesiId " + " and stn.skor = :skor" + " and stn.noRec <> :noRec"
+ " order by stn.tanggalMulaiBerlaku desc")
List<String> findLastDupSkoring(@Param("namaProduk") String namaProduk, @Param("profesiId") Integer idProfesi,
@Param("skor") Double skor, @Param("patternText") String patternText, @Param("noRec") String noRec);
@Query(strCekDupSkoring + tglBerlaku + idSkoring)
@Query("select stn.noRec " + "from SkoringTindakanNakes stn " + "inner join stn.produk prn "
+ "inner join prn.profesi pfs " + "where stn.statusEnabled is true "
+ "and lower(regexp_replace(prn.namaProduk,:patternText,'','g')) = :namaProduk "
+ "and pfs.id = :profesiId " + " and to_char(stn.tanggalMulaiBerlaku,'yyyy-MM-dd') = :tglMulaiBerlaku"
+ " and stn.noRec <> :noRec")
List<String> findDupSkoring(@Param("namaProduk") String namaProduk, @Param("profesiId") Integer idProfesi,
@Param("tglMulaiBerlaku") String tglMulaiBerlaku, @Param("patternText") String patternText,
@Param("noRec") String noRec);

View File

@ -1,91 +1,150 @@
package com.jasamedika.medifirst2000.dao;
import java.util.List;
import java.util.Map;
import com.jasamedika.medifirst2000.entities.SkoringTindakanPerawat;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.PagingAndSortingRepository;
import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Repository;
import com.jasamedika.medifirst2000.entities.SkoringTindakanPerawat;
import java.util.List;
import java.util.Map;
@Repository("skoringTindakanPerawatDao")
public interface SkoringTindakanPerawatDao extends PagingAndSortingRepository<SkoringTindakanPerawat, String> {
String strAllEnabled = "select new Map(stp.noRec as noRec," + "stp.statusEnabled as statusEnabled,"
+ "stp.skor as skor," + "stp.statusVerifikasi as kdVerif,"
+ "(case when stp.statusVerifikasi is false then 'Belum Verifikasi' "
@Query("select new Map(stp.noRec as noRec," + "stp.statusEnabled as statusEnabled," + "stp.skor as skor,"
+ "stp.statusVerifikasi as kdVerif," + "(case when stp.statusVerifikasi is false then 'Belum Verifikasi' "
+ "when stp.statusVerifikasi is true then 'Terverifikasi' end) as stVerif,"
+ "stp.tanggalMulaiBerlaku as tglMulaiBerlaku," + "stp.tanggalPembaharuanData as tglPembaharuanData,"
+ "prp.id as produkId,prp.namaProduk as namaProduk," + "prp.klasifikasi as kdKlasif,"
+ "(case when prp.klasifikasi = 0 then 'Tidak Ada' " + "when prp.klasifikasi = 1 then 'Asuhan' "
+ "when prp.klasifikasi = 2 then 'Tindakan' " + "when prp.klasifikasi = 3 then 'Laporan' end) as stKlasif) "
+ "from SkoringTindakanPerawat stp " + "inner join stp.produk prp " + "where stp.statusEnabled is true "
+ "and to_char(stp.tanggalMulaiBerlaku,'yyyy-MM-dd') <= to_char(now(),'yyyy-MM-dd')";
String produk = " and lower(prp.namaProduk) like %:namaProduk%";
String statusVerifikasi = " and stp.statusVerifikasi = :isVerif";
String statusKlasifikasi = " and prp.klasifikasi = :kdKlasif";
String sortSearch = " order by prp.namaProduk asc, "
+ "stp.tanggalMulaiBerlaku desc, stp.tanggalPembaharuanData desc";
@Query(strAllEnabled + sortSearch)
+ "and to_char(stp.tanggalMulaiBerlaku,'yyyy-MM-dd') <= to_char(now(),'yyyy-MM-dd')"
+ " order by prp.namaProduk asc, " + "stp.tanggalMulaiBerlaku desc, stp.tanggalPembaharuanData desc")
List<Map<String, Object>> findAllEnabled();
@Query(strAllEnabled + produk + sortSearch)
@Query("select new Map(stp.noRec as noRec," + "stp.statusEnabled as statusEnabled," + "stp.skor as skor,"
+ "stp.statusVerifikasi as kdVerif," + "(case when stp.statusVerifikasi is false then 'Belum Verifikasi' "
+ "when stp.statusVerifikasi is true then 'Terverifikasi' end) as stVerif,"
+ "stp.tanggalMulaiBerlaku as tglMulaiBerlaku," + "stp.tanggalPembaharuanData as tglPembaharuanData,"
+ "prp.id as produkId,prp.namaProduk as namaProduk," + "prp.klasifikasi as kdKlasif,"
+ "(case when prp.klasifikasi = 0 then 'Tidak Ada' " + "when prp.klasifikasi = 1 then 'Asuhan' "
+ "when prp.klasifikasi = 2 then 'Tindakan' " + "when prp.klasifikasi = 3 then 'Laporan' end) as stKlasif) "
+ "from SkoringTindakanPerawat stp " + "inner join stp.produk prp " + "where stp.statusEnabled is true "
+ "and to_char(stp.tanggalMulaiBerlaku,'yyyy-MM-dd') <= to_char(now(),'yyyy-MM-dd')"
+ " and lower(prp.namaProduk) like %:namaProduk%" + " order by prp.namaProduk asc, "
+ "stp.tanggalMulaiBerlaku desc, stp.tanggalPembaharuanData desc")
List<Map<String, Object>> findAllEnabledByProduk(@Param("namaProduk") String namaProduk);
@Query(strAllEnabled + statusVerifikasi + sortSearch)
@Query("select new Map(stp.noRec as noRec," + "stp.statusEnabled as statusEnabled," + "stp.skor as skor,"
+ "stp.statusVerifikasi as kdVerif," + "(case when stp.statusVerifikasi is false then 'Belum Verifikasi' "
+ "when stp.statusVerifikasi is true then 'Terverifikasi' end) as stVerif,"
+ "stp.tanggalMulaiBerlaku as tglMulaiBerlaku," + "stp.tanggalPembaharuanData as tglPembaharuanData,"
+ "prp.id as produkId,prp.namaProduk as namaProduk," + "prp.klasifikasi as kdKlasif,"
+ "(case when prp.klasifikasi = 0 then 'Tidak Ada' " + "when prp.klasifikasi = 1 then 'Asuhan' "
+ "when prp.klasifikasi = 2 then 'Tindakan' " + "when prp.klasifikasi = 3 then 'Laporan' end) as stKlasif) "
+ "from SkoringTindakanPerawat stp " + "inner join stp.produk prp " + "where stp.statusEnabled is true "
+ "and to_char(stp.tanggalMulaiBerlaku,'yyyy-MM-dd') <= to_char(now(),'yyyy-MM-dd')"
+ " and stp.statusVerifikasi = :isVerif" + " order by prp.namaProduk asc, "
+ "stp.tanggalMulaiBerlaku desc, stp.tanggalPembaharuanData desc")
List<Map<String, Object>> findAllEnabledByVerif(@Param("isVerif") Boolean isVerif);
@Query(strAllEnabled + statusKlasifikasi + sortSearch)
@Query("select new Map(stp.noRec as noRec," + "stp.statusEnabled as statusEnabled," + "stp.skor as skor,"
+ "stp.statusVerifikasi as kdVerif," + "(case when stp.statusVerifikasi is false then 'Belum Verifikasi' "
+ "when stp.statusVerifikasi is true then 'Terverifikasi' end) as stVerif,"
+ "stp.tanggalMulaiBerlaku as tglMulaiBerlaku," + "stp.tanggalPembaharuanData as tglPembaharuanData,"
+ "prp.id as produkId,prp.namaProduk as namaProduk," + "prp.klasifikasi as kdKlasif,"
+ "(case when prp.klasifikasi = 0 then 'Tidak Ada' " + "when prp.klasifikasi = 1 then 'Asuhan' "
+ "when prp.klasifikasi = 2 then 'Tindakan' " + "when prp.klasifikasi = 3 then 'Laporan' end) as stKlasif) "
+ "from SkoringTindakanPerawat stp " + "inner join stp.produk prp " + "where stp.statusEnabled is true "
+ "and to_char(stp.tanggalMulaiBerlaku,'yyyy-MM-dd') <= to_char(now(),'yyyy-MM-dd')"
+ " and prp.klasifikasi = :kdKlasif" + " order by prp.namaProduk asc, "
+ "stp.tanggalMulaiBerlaku desc, stp.tanggalPembaharuanData desc")
List<Map<String, Object>> findAllEnabledByKlasif(@Param("kdKlasif") Short kdKlasif);
@Query(strAllEnabled + produk + statusVerifikasi + sortSearch)
@Query("select new Map(stp.noRec as noRec," + "stp.statusEnabled as statusEnabled," + "stp.skor as skor,"
+ "stp.statusVerifikasi as kdVerif," + "(case when stp.statusVerifikasi is false then 'Belum Verifikasi' "
+ "when stp.statusVerifikasi is true then 'Terverifikasi' end) as stVerif,"
+ "stp.tanggalMulaiBerlaku as tglMulaiBerlaku," + "stp.tanggalPembaharuanData as tglPembaharuanData,"
+ "prp.id as produkId,prp.namaProduk as namaProduk," + "prp.klasifikasi as kdKlasif,"
+ "(case when prp.klasifikasi = 0 then 'Tidak Ada' " + "when prp.klasifikasi = 1 then 'Asuhan' "
+ "when prp.klasifikasi = 2 then 'Tindakan' " + "when prp.klasifikasi = 3 then 'Laporan' end) as stKlasif) "
+ "from SkoringTindakanPerawat stp " + "inner join stp.produk prp " + "where stp.statusEnabled is true "
+ "and to_char(stp.tanggalMulaiBerlaku,'yyyy-MM-dd') <= to_char(now(),'yyyy-MM-dd')"
+ " and lower(prp.namaProduk) like %:namaProduk%" + " and stp.statusVerifikasi = :isVerif"
+ " order by prp.namaProduk asc, " + "stp.tanggalMulaiBerlaku desc, stp.tanggalPembaharuanData desc")
List<Map<String, Object>> findAllEnabledByProdukVerif(@Param("namaProduk") String namaProduk,
@Param("isVerif") Boolean isVerif);
@Query(strAllEnabled + produk + statusKlasifikasi + sortSearch)
@Query("select new Map(stp.noRec as noRec," + "stp.statusEnabled as statusEnabled," + "stp.skor as skor,"
+ "stp.statusVerifikasi as kdVerif," + "(case when stp.statusVerifikasi is false then 'Belum Verifikasi' "
+ "when stp.statusVerifikasi is true then 'Terverifikasi' end) as stVerif,"
+ "stp.tanggalMulaiBerlaku as tglMulaiBerlaku," + "stp.tanggalPembaharuanData as tglPembaharuanData,"
+ "prp.id as produkId,prp.namaProduk as namaProduk," + "prp.klasifikasi as kdKlasif,"
+ "(case when prp.klasifikasi = 0 then 'Tidak Ada' " + "when prp.klasifikasi = 1 then 'Asuhan' "
+ "when prp.klasifikasi = 2 then 'Tindakan' " + "when prp.klasifikasi = 3 then 'Laporan' end) as stKlasif) "
+ "from SkoringTindakanPerawat stp " + "inner join stp.produk prp " + "where stp.statusEnabled is true "
+ "and to_char(stp.tanggalMulaiBerlaku,'yyyy-MM-dd') <= to_char(now(),'yyyy-MM-dd')"
+ " and lower(prp.namaProduk) like %:namaProduk%" + " and prp.klasifikasi = :kdKlasif"
+ " order by prp.namaProduk asc, " + "stp.tanggalMulaiBerlaku desc, stp.tanggalPembaharuanData desc")
List<Map<String, Object>> findAllEnabledByProdukKlasif(@Param("namaProduk") String namaProduk,
@Param("kdKlasif") Short kdKlasif);
@Query(strAllEnabled + statusVerifikasi + statusKlasifikasi + sortSearch)
@Query("select new Map(stp.noRec as noRec," + "stp.statusEnabled as statusEnabled," + "stp.skor as skor,"
+ "stp.statusVerifikasi as kdVerif," + "(case when stp.statusVerifikasi is false then 'Belum Verifikasi' "
+ "when stp.statusVerifikasi is true then 'Terverifikasi' end) as stVerif,"
+ "stp.tanggalMulaiBerlaku as tglMulaiBerlaku," + "stp.tanggalPembaharuanData as tglPembaharuanData,"
+ "prp.id as produkId,prp.namaProduk as namaProduk," + "prp.klasifikasi as kdKlasif,"
+ "(case when prp.klasifikasi = 0 then 'Tidak Ada' " + "when prp.klasifikasi = 1 then 'Asuhan' "
+ "when prp.klasifikasi = 2 then 'Tindakan' " + "when prp.klasifikasi = 3 then 'Laporan' end) as stKlasif) "
+ "from SkoringTindakanPerawat stp " + "inner join stp.produk prp " + "where stp.statusEnabled is true "
+ "and to_char(stp.tanggalMulaiBerlaku,'yyyy-MM-dd') <= to_char(now(),'yyyy-MM-dd')"
+ " and stp.statusVerifikasi = :isVerif" + " and prp.klasifikasi = :kdKlasif"
+ " order by prp.namaProduk asc, " + "stp.tanggalMulaiBerlaku desc, stp.tanggalPembaharuanData desc")
List<Map<String, Object>> findAllEnabledByVerifKlasif(@Param("isVerif") Boolean isVerif,
@Param("kdKlasif") Short kdKlasif);
@Query(strAllEnabled + produk + statusVerifikasi + statusKlasifikasi + sortSearch)
@Query("select new Map(stp.noRec as noRec," + "stp.statusEnabled as statusEnabled," + "stp.skor as skor,"
+ "stp.statusVerifikasi as kdVerif," + "(case when stp.statusVerifikasi is false then 'Belum Verifikasi' "
+ "when stp.statusVerifikasi is true then 'Terverifikasi' end) as stVerif,"
+ "stp.tanggalMulaiBerlaku as tglMulaiBerlaku," + "stp.tanggalPembaharuanData as tglPembaharuanData,"
+ "prp.id as produkId,prp.namaProduk as namaProduk," + "prp.klasifikasi as kdKlasif,"
+ "(case when prp.klasifikasi = 0 then 'Tidak Ada' " + "when prp.klasifikasi = 1 then 'Asuhan' "
+ "when prp.klasifikasi = 2 then 'Tindakan' " + "when prp.klasifikasi = 3 then 'Laporan' end) as stKlasif) "
+ "from SkoringTindakanPerawat stp " + "inner join stp.produk prp " + "where stp.statusEnabled is true "
+ "and to_char(stp.tanggalMulaiBerlaku,'yyyy-MM-dd') <= to_char(now(),'yyyy-MM-dd')"
+ " and lower(prp.namaProduk) like %:namaProduk%" + " and stp.statusVerifikasi = :isVerif"
+ " and prp.klasifikasi = :kdKlasif" + " order by prp.namaProduk asc, "
+ "stp.tanggalMulaiBerlaku desc, stp.tanggalPembaharuanData desc")
List<Map<String, Object>> findAllEnabledByProdukVerifKlasif(@Param("namaProduk") String namaProduk,
@Param("isVerif") Boolean isVerif, @Param("kdKlasif") Short kdKlasif);
String strCekDupSkoring = "select stp.noRec " + "from SkoringTindakanPerawat stp " + "inner join stp.produk prp "
@Query("select stp.noRec " + "from SkoringTindakanPerawat stp " + "inner join stp.produk prp "
+ "where stp.statusEnabled is true "
+ "and lower(regexp_replace(prp.namaProduk,:patternText,'','g')) = :namaProduk";
String skor = " and stp.skor = :skor";
String tglBerlaku = " and to_char(stp.tanggalMulaiBerlaku,'yyyy-MM-dd') = :tglMulaiBerlaku";
String idSkoring = " and stp.noRec <> :noRec";
String sortTglBerlaku = " order by stp.tanggalMulaiBerlaku desc";
@Query(strCekDupSkoring + skor + sortTglBerlaku)
+ "and lower(regexp_replace(prp.namaProduk,:patternText,'','g')) = :namaProduk" + " and stp.skor = :skor"
+ " order by stp.tanggalMulaiBerlaku desc")
List<String> findLastDupSkoring(@Param("namaProduk") String namaProduk, @Param("skor") Double skor,
@Param("patternText") String patternText);
@Query(strCekDupSkoring + tglBerlaku)
@Query("select stp.noRec " + "from SkoringTindakanPerawat stp " + "inner join stp.produk prp "
+ "where stp.statusEnabled is true "
+ "and lower(regexp_replace(prp.namaProduk,:patternText,'','g')) = :namaProduk"
+ " and to_char(stp.tanggalMulaiBerlaku,'yyyy-MM-dd') = :tglMulaiBerlaku")
List<String> findDupSkoring(@Param("namaProduk") String namaProduk,
@Param("tglMulaiBerlaku") String tglMulaiBerlaku, @Param("patternText") String patternText);
@Query(strCekDupSkoring + skor + idSkoring + sortTglBerlaku)
@Query("select stp.noRec " + "from SkoringTindakanPerawat stp " + "inner join stp.produk prp "
+ "where stp.statusEnabled is true "
+ "and lower(regexp_replace(prp.namaProduk,:patternText,'','g')) = :namaProduk" + " and stp.skor = :skor"
+ " and stp.noRec <> :noRec" + " order by stp.tanggalMulaiBerlaku desc")
List<String> findLastDupSkoring(@Param("namaProduk") String namaProduk, @Param("skor") Double skor,
@Param("patternText") String patternText, @Param("noRec") String noRec);
@Query(strCekDupSkoring + tglBerlaku + idSkoring)
@Query("select stp.noRec " + "from SkoringTindakanPerawat stp " + "inner join stp.produk prp "
+ "where stp.statusEnabled is true "
+ "and lower(regexp_replace(prp.namaProduk,:patternText,'','g')) = :namaProduk"
+ " and to_char(stp.tanggalMulaiBerlaku,'yyyy-MM-dd') = :tglMulaiBerlaku" + " and stp.noRec <> :noRec")
List<String> findDupSkoring(@Param("namaProduk") String namaProduk,
@Param("tglMulaiBerlaku") String tglMulaiBerlaku, @Param("patternText") String patternText,
@Param("noRec") String noRec);

View File

@ -0,0 +1,14 @@
package com.jasamedika.medifirst2000.logging.dao;
import com.jasamedika.medifirst2000.entities.JenisLog;
import org.springframework.data.jpa.repository.JpaRepository;
/**
* @author Salman
* @version 1.0.0
* @since 31/01/2024
*/
public interface JenisLogDao extends JpaRepository<JenisLog, Long> {
boolean existsByJenisLog(String jenisLog);
}

View File

@ -7,19 +7,10 @@
http://www.springframework.org/schema/data/jpa http://www.springframework.org/schema/data/jpa/spring-jpa.xsd">
<context:annotation-config />
<context:component-scan base-package="com.jasamedika.medifirst2000"/>
<jpa:repositories base-package="com.jasamedika.medifirst2000.dao"
entity-manager-factory-ref="entityManagerFactory" transaction-manager-ref="transactionManager" />
<!-- <bean id="facadeMonitoringAdvisor" class="net.bull.javamelody.MonitoringSpringAdvisor">
<property name="pointcut">
<bean class="net.bull.javamelody.MonitoredWithInterfacePointcut">
<property name="interfaceName" value="com.jasamedika.medifirst2000.service.MonitoredService" />
</bean>
</property>
</bean> -->
<context:component-scan base-package="com.jasamedika.medifirst2000" />
<jpa:repositories base-package="com.jasamedika.medifirst2000.dao"
entity-manager-factory-ref="entityManagerFactory"
transaction-manager-ref="transactionManager" />
</beans>

View File

@ -1,55 +0,0 @@
package com.jasamedika.medifirst2000.dao.test;
/**Agama Class Test
*/
import static org.junit.Assert.assertNull;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.TimeZone;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import com.jasamedika.medifirst2000.dao.AsalAnggaranDao;
import com.jasamedika.medifirst2000.entities.AsalAnggaran;
import com.jasamedika.medifirst2000.util.DateUtil;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath*:com/jasamedika/**/applicationContext.xml")
public class AsalAnggaranDaoTest {
/*@Autowired
private AsalAnggaranDao dao;
@Test
public void testFindById() {
AsalAnggaran result = dao.findOne(1);
assertNull(result);
}
*/
public static void main(String[]args) throws ParseException{
/*String[] dayNameArray = {"Senin", "Selasa", "Rabu", "Kamis", "Jumat", "Sabtu", "Minggu"};
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
String dayName = dayNameArray[DateUtil.now().getDay()-1];
String dateNumber = String.valueOf(DateUtil.now().getDate());
String dateFullFormat = format.format(DateUtil.now().getTime());
String time = new SimpleDateFormat("HH:mm").format(Calendar.getInstance().getTime());
SimpleDateFormat format = new SimpleDateFormat("HH:mm");
Date date1 = format.parse(time);
Date date2 = format.parse("12:00");
Long timeNow = date1.getTime();
Long timeEnd = date2.getTime();*/
}
}

View File

@ -1,31 +0,0 @@
package com.jasamedika.medifirst2000.dao.test;
/**Agama Class Test
*/
import static org.junit.Assert.assertNull;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import com.jasamedika.medifirst2000.dao.DepartemenDao;
import com.jasamedika.medifirst2000.entities.Departemen;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath*:com/jasamedika/**/applicationContext.xml")
public class DepartemenDaoTest {
@Autowired
private DepartemenDao dao;
@Test
public void testFindById() {
Departemen result = dao.findOne(1);
// System.out.println(result.getAlamats().size());
// assertNotNull(result.getAlamats());
//assertNull(result);
}
}

View File

@ -1,41 +0,0 @@
package com.jasamedika.medifirst2000.dao.test;
/**Agama Class Test
*/
import static org.junit.Assert.*;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import com.jasamedika.medifirst2000.dao.AntrianPasienDiPeriksaDao;
import com.jasamedika.medifirst2000.dao.FungsiProdukDao;
import com.jasamedika.medifirst2000.entities.FungsiProduk;
import com.jasamedika.medifirst2000.service.AntrianPasienDiPeriksaService;
import com.jasamedika.medifirst2000.service.MonitoringAbsenService;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath*:com/jasamedika/**/applicationContext.xml")
public class FungsiProdukDaoTest {
@Autowired
private FungsiProdukDao dao;
@Autowired
private MonitoringAbsenService monitoringAbsenService;
@Test
public void testFindById() {
FungsiProduk result = dao.findOne(1);
assertNull(result);
}
@Test
public void testLemburSDM(){
Integer lembur = monitoringAbsenService.getLemburVerifiedbySDM(141, "1-November-2017");
assertSame(360, lembur);
}
}

View File

@ -1,35 +0,0 @@
package com.jasamedika.medifirst2000.dao.test;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import java.util.List;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.transaction.annotation.Transactional;
import com.jasamedika.medifirst2000.dao.GenericViewDao;
import com.jasamedika.medifirst2000.dao.PapPernapasanDao;
import com.jasamedika.medifirst2000.dao.PasienDao;
import com.jasamedika.medifirst2000.entities.GenericView;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath*:com/jasamedika/**/applicationContext.xml")
public class GenerateNoCmDaoTest {
@Autowired
private PasienDao pasienDao;
@Test
@Transactional
public void testFindNoCmDaoSelect() {
List<String> list=pasienDao.findAllNoCm();
assertNotNull(list);
System.out.println("LISSSSSSSSSST : "+list.size());
assertEquals("8", list.size());
}
}

View File

@ -1,31 +0,0 @@
package com.jasamedika.medifirst2000.dao.test;
/**Agama Class Test
*/
import static org.junit.Assert.assertNull;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import com.jasamedika.medifirst2000.dao.JenisRekananDao;
import com.jasamedika.medifirst2000.entities.JenisRekanan;
//@RunWith(SpringJUnit4ClassRunner.class)
//@ContextConfiguration("classpath*:com/jasamedika/**/applicationContext.xml")
public class JenisRekananDaoTest {
// @Autowired
private JenisRekananDao dao;
// @Test
public void testFindById() {
JenisRekanan result = dao.findOne(1);
// System.out.println(result.getAlamats().size());
// assertNotNull(result.getAlamats());
assertNull(result);
}
}

View File

@ -1,29 +0,0 @@
package com.jasamedika.medifirst2000.dao.test;
/**Agama Class Test
*/
import static org.junit.Assert.assertEquals;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import com.jasamedika.medifirst2000.dao.custom.impl.KalkulatorDaoCustomImpl;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath*:com/jasamedika/**/applicationContext.xml")
public class KalkulatorDaoTest {
@Autowired
private KalkulatorDaoCustomImpl dao;
@Test
public void testKalkluator() {
String operationInput = "14 + 6/3 - 3*5 + 9-8 * (4-2)";
int result = dao.calculateFromString(operationInput);
assertEquals(-6, result);
}
}

View File

@ -1,31 +0,0 @@
package com.jasamedika.medifirst2000.dao.test;
/**Agama Class Test
*/
import static org.junit.Assert.assertNull;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import com.jasamedika.medifirst2000.dao.KelompokProdukDao;
import com.jasamedika.medifirst2000.entities.KelompokProduk;
//@RunWith(SpringJUnit4ClassRunner.class)
//@ContextConfiguration("classpath*:com/jasamedika/**/applicationContext.xml")
public class KelompokProdukDaoTest {
// @Autowired
private KelompokProdukDao dao;
// @Test
public void testFindById() {
KelompokProduk result = dao.findOne(1);
// System.out.println(result.getAlamats().size());
// assertNotNull(result.getAlamats());
assertNull(result);
}
}

View File

@ -1,42 +0,0 @@
package com.jasamedika.medifirst2000.dao.test;
/**Agama Class Test
*/
import static org.junit.Assert.*;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import com.jasamedika.medifirst2000.dao.LoginUserDao;
import com.jasamedika.medifirst2000.entities.LoginUser;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath*:com/jasamedika/**/applicationContext.xml")
public class LoginUserDaoTest {
@Autowired
private LoginUserDao dao;
@Test
public void testFindById() {
try {
LoginUser result = dao.findOne(new Integer(1));
assertNotNull(result);
} catch (Exception ex) {
ex.printStackTrace();
}
// System.out.println(result.getAlamats().size());
// assertNotNull(result.getAlamats());
}
@Test
public void testNorec(){
LoginUser loginUser = new LoginUser();
assertNotNull(loginUser.getNoRec());
}
}

View File

@ -1,93 +0,0 @@
package com.jasamedika.medifirst2000.dao.test;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
/**Agama Class Test
*/
import static org.junit.Assert.assertNull;
import java.util.ArrayList;
import java.util.List;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.transaction.annotation.Transactional;
import com.jasamedika.medifirst2000.entities.GenericView;
import com.jasamedika.medifirst2000.entities.PapAlergi;
import com.jasamedika.medifirst2000.entities.Pasien;
import com.jasamedika.medifirst2000.entities.RegistrasiPelayananPasien;
import com.jasamedika.medifirst2000.dao.GenericViewDao;
import com.jasamedika.medifirst2000.dao.PapAlergiDao;
import com.jasamedika.medifirst2000.dao.PasienDao;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath*:com/jasamedika/**/applicationContext.xml")
public class PapAlergiDaoTest {/*
@Autowired
private PapAlergiDao papAlergiDao;
@Autowired
private PasienDao pasienDao;
@Test
@Transactional
public void testPapAlergiDaoSave(){
PapAlergi model = populateModel();
PapAlergi resultModel1 = papAlergiDao.save(model);
Cek Hasil save
assertNotNull(resultModel1);
assertEquals(resultModel1.getKeteranganData(),"Keterangan Data Alergi");
assertEquals(resultModel1.getPasien().getNamaPasien(),"adik");
assertEquals(resultModel1.getRegistrasiPelayananPasien().getKeteranganLainnyaRencana(),"Rencana");
}
@Test
@Transactional
public void testPapAlergiDaoUpdate(){
PapAlergi model = populateModel();
PapAlergi result = papAlergiDao.save(model);
assertNotNull(result);
result.getPasien().setNamaPasien("Nama Update");
result.getRegistrasiPelayananPasien().setKeteranganLainnyaRencana("Keterangan Update");
result.setKeteranganData("Keterangan Data Update");
PapAlergi resultUpdate = papAlergiDao.save(result);
assertEquals("Keterangan Data Update",resultUpdate.getKeteranganData());
}
@Test
@Transactional
public void testPapAlergiDaoDelete(){
PapAlergi model = populateModel();
papAlergiDao.save(model);
PapAlergi resultModel1 = papAlergiDao.findOne(model.getNoRec());
Cek Model di Database
assertNotNull(resultModel1);
assertNotNull(resultModel1.getKeteranganData());
papAlergiDao.delete(model);
PapAlergi resultModel2 = papAlergiDao.findOne(model.getNoRec());
Cek Hasil Delete Model
assertNull(resultModel2);
}
public PapAlergi populateModel(){
PapAlergi model = new PapAlergi();
RegistrasiPelayananPasien registrasiPelayananPasien = new RegistrasiPelayananPasien();
registrasiPelayananPasien.setKeteranganLainnyaRencana("Rencana");
Pasien pasien = pasienDao.findOne(393);
model.setRegistrasiPelayananPasien(registrasiPelayananPasien);
model.setPasien(pasien);
model.setKeteranganData("Keterangan Data Alergi");
return model;
}
*/}

View File

@ -1,103 +0,0 @@
package com.jasamedika.medifirst2000.dao.test;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
/**Agama Class Test
*/
import static org.junit.Assert.assertNull;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.transaction.annotation.Transactional;
import com.jasamedika.medifirst2000.entities.GenericView;
import com.jasamedika.medifirst2000.entities.PapAlergi;
import com.jasamedika.medifirst2000.entities.PapAnamesis;
import com.jasamedika.medifirst2000.entities.Pasien;
import com.jasamedika.medifirst2000.entities.RegistrasiPelayananPasien;
import com.jasamedika.medifirst2000.dao.GenericViewDao;
import com.jasamedika.medifirst2000.dao.PapAnamesisDao;
import com.jasamedika.medifirst2000.dao.PasienDao;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath*:com/jasamedika/**/applicationContext.xml")
public class PapAnamesisDaoTest {
@Autowired
private PapAnamesisDao papAnamesisDao;
@Autowired
private PasienDao pasienDao;
@Test
@Transactional
public void testPapAnamesisDaoSave(){
PapAnamesis model = populateModel();
PapAnamesis result = papAnamesisDao.save(model);
assertNotNull(result);
assertEquals(result.getKeluhan(),"Keterangan Keluhan");
assertEquals(result.getPasien().getNamaPasien(),"adik");
assertNotNull(result.getRegistrasiPelayananPasien());
assertNotNull(result.getTglInput());
PapAnamesis resultFind = papAnamesisDao.findOne(model.getNoRec());
assertNotNull(resultFind);
assertEquals(resultFind.getKeluhan(),"Keterangan Keluhan");
assertEquals(resultFind.getPasien().getNamaPasien(),"adik");
assertNotNull(resultFind.getRegistrasiPelayananPasien());
assertNotNull(resultFind.getTglInput());
}
@Test
@Transactional
public void testPapAnamesisDaoUpdate(){
PapAnamesis model = populateModel();
PapAnamesis result = papAnamesisDao.save(model);
assertNotNull(result);
result.setKeluhan("Update Keluhan");
result.getPasien().setNamaPasien("Update Nama Pasien");
result.getRegistrasiPelayananPasien().setKdDokter("Update Kode Dokter");
papAnamesisDao.save(result);
PapAnamesis resultUpdate = papAnamesisDao.findOne(result.getNoRec());
assertEquals("Update Keluhan",resultUpdate.getKeluhan());
assertEquals("Update Nama Pasien",resultUpdate.getPasien().getNamaPasien());
assertEquals("Update Kode Dokter",resultUpdate.getRegistrasiPelayananPasien().getKdDokter());
}
@Test
@Transactional
public void testPapAnamesisDaoDelete(){
PapAnamesis model = populateModel();
papAnamesisDao.save(model);
PapAnamesis result1 = papAnamesisDao.findOne(model.getNoRec());
assertNotNull(result1);
assertNotNull(result1.getKeluhan());
papAnamesisDao.delete(model);
PapAnamesis result2 = papAnamesisDao.findOne(model.getNoRec());
assertNull(result2);
}
public PapAnamesis populateModel(){
PapAnamesis model = new PapAnamesis();
Pasien pasien = pasienDao.findOne(393);
model.setPasien(pasien);
model.setTglInput(new Date());
model.setRegistrasiPelayananPasien(new RegistrasiPelayananPasien());
model.setKeluhan("Keterangan Keluhan");
return model;
}
}

View File

@ -1,85 +0,0 @@
package com.jasamedika.medifirst2000.dao.test;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import java.util.List;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.transaction.annotation.Transactional;
import com.jasamedika.medifirst2000.dao.GenericViewDao;
import com.jasamedika.medifirst2000.dao.PapCatatanDao;
import com.jasamedika.medifirst2000.entities.GenericView;
import com.jasamedika.medifirst2000.entities.PapCatatan;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath*:com/jasamedika/**/applicationContext.xml")
public class PapCatatanDaoTest {
@Autowired
private GenericViewDao genericViewDao;
@Autowired
private PapCatatanDao papCatatanDao;
@Test
@Transactional
public void testGenericDaoSelect() {
GenericView rujukan = populateGenericView("Rujukan");
assertNotNull(rujukan);
assertEquals("1", String.valueOf(rujukan.getKdGenericView()));
}
@Test
@Transactional
public void testPAPCatatanDaoSave() {
PapCatatan model = populateModel();
PapCatatan resultModel=papCatatanDao.save(model);
assertNotNull(resultModel);
assertNotNull(resultModel.getRujukan());
//assertEquals("1", String.valueOf(resultModel.getRujukan().getKdGenericView()));
PapCatatan resultModel2=papCatatanDao.findOne(resultModel.getNoRec());
assertNotNull(resultModel2);
assertNotNull(resultModel2.getRujukan());
//assertEquals("1", String.valueOf(resultModel2.getRujukan().getKdGenericView()));
}
private PapCatatan populateModel() {
PapCatatan model=new PapCatatan();
GenericView rujukan = populateGenericView("Rujukan");
//model.setRujukan(rujukan);
return model;
}
private GenericView populateGenericView(String previx) {
GenericView genericView=new GenericView();
List<GenericView> listRujukan=genericViewDao.findGenericViewByPrevix(previx);
for (GenericView gv:listRujukan) {
if(gv.getKdGenericView()==1){
genericView=gv;
}
}
return genericView;
}
@Test
@Transactional
public void testPAPCatatanDaoFindAll() {
PapCatatan model1 = populateModel();
PapCatatan resultModel1=papCatatanDao.save(model1);
PapCatatan model2 = populateModel();
PapCatatan resultModel2=papCatatanDao.save(model2);
assertNotNull(resultModel1);
assertNotNull(resultModel2);
List<PapCatatan> results = (List<PapCatatan>) papCatatanDao.findAll();
assertTrue(results.size() > 0);
assertNotNull(results);
assertTrue(results.size() == 2);
}
}

View File

@ -1,128 +0,0 @@
package com.jasamedika.medifirst2000.dao.test;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import java.util.Date;
import java.util.List;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.transaction.annotation.Transactional;
import com.jasamedika.medifirst2000.dao.GenericViewDao;
import com.jasamedika.medifirst2000.dao.PapEliminasiDao;
import com.jasamedika.medifirst2000.dao.RegistrasiPelayananPasienDao;
import com.jasamedika.medifirst2000.entities.GenericView;
import com.jasamedika.medifirst2000.entities.PapEliminasi;
import com.jasamedika.medifirst2000.util.DateUtil;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath*:com/jasamedika/**/applicationContext.xml")
public class PapEliminasiDaoTest {
@Autowired
private GenericViewDao genericViewDao;
@Autowired
private PapEliminasiDao papEliminasiDao;
@Autowired
private RegistrasiPelayananPasienDao registrasiPelayananPasienDao;
@Test
@Transactional
public void testFindByNoCmAndTglInput() {
//registrasiPelayananPasienDao.findOne("40288c99557b0f0f01557b155bcc0000");
Date tgl=DateUtil.toDate("2016-06-19");
System.out.println("DATEEEEEEEEEE : "+ tgl);
// PapEliminasi abc=papEliminasiDao.findPapEliminasiByNoCmAndTglInput("00001", DateUtil.toDate("2016-06-19"));
PapEliminasi abc=papEliminasiDao.findByNoRec("40288c99559075a1015590762cb40000");
assertNotNull(abc);
assertNotNull(abc.getPasien());
assertEquals("00001", abc.getPasien().getNoCm());
}
/*
@Test
@Transactional
public void testGenericDaoSelect() {
GenericView pengeluaranDefeaksi = populateGenericView("Pengeluaran Defeaksi");
GenericView pengeluaranUrin = populateGenericView("Pengeluaran Urin");
GenericView karakteristikFeses = populateGenericView("Karakteristik Feses");
assertNotNull(pengeluaranDefeaksi);
assertNotNull(pengeluaranUrin);
assertNotNull(karakteristikFeses);
assertEquals("1", String.valueOf(pengeluaranDefeaksi.getKdGenericView()));
assertEquals("1", String.valueOf(pengeluaranUrin.getKdGenericView()));
assertEquals("1", String.valueOf(karakteristikFeses.getKdGenericView()));
}
@Test
@Transactional
public void testPAPEliminasiDaoSave() {
PapEliminasi model = populateModel();
PapEliminasi resultModel=papEliminasiDao.save(model);
assertNotNull(resultModel);
assertEquals("1", resultModel.getFrekuensiDefeaksi());
assertEquals("2", resultModel.getKonsistensiDefeaksi());
assertEquals("3", resultModel.getDiuresisUrin());
assertNotNull(resultModel.getPengeluaranDefeaksi());
assertNotNull(resultModel.getPengeluaranUrin());
assertNotNull(resultModel.getKarakteristikFeses());
PapEliminasi resultModel2=papEliminasiDao.findOne(resultModel.getNoRec());
assertNotNull(resultModel2);
assertEquals("1", resultModel2.getFrekuensiDefeaksi());
assertEquals("2", resultModel2.getKonsistensiDefeaksi());
assertEquals("3", resultModel2.getDiuresisUrin());
assertNotNull(resultModel2.getPengeluaranDefeaksi());
assertNotNull(resultModel2.getPengeluaranUrin());
assertNotNull(resultModel2.getKarakteristikFeses());
assertEquals("1",String.valueOf(resultModel2.getPengeluaranDefeaksi().getKdGenericView()));
assertEquals("1",String.valueOf(resultModel2.getPengeluaranUrin().getKdGenericView()));
assertEquals("1",String.valueOf(resultModel2.getKarakteristikFeses().getKdGenericView()));
}
private PapEliminasi populateModel() {
PapEliminasi model=new PapEliminasi();
GenericView pengeluaranDefeaksi = populateGenericView("Pengeluaran Defeaksi");
GenericView pengeluaranUrin = populateGenericView("Pengeluaran Urin");
GenericView karakteristikFeses = populateGenericView("Karakteristik Feses");
model.setPengeluaranDefeaksi(pengeluaranDefeaksi);
model.setFrekuensiDefeaksi("1");
model.setKonsistensiDefeaksi("2");
model.setKarakteristikFeses(karakteristikFeses);
model.setPengeluaranUrin(pengeluaranUrin);
model.setIsKelainanUrin(true);
model.setDiuresisUrin("3");
return model;
}
private GenericView populateGenericView(String previx) {
GenericView genericView=new GenericView();
List<GenericView> list=genericViewDao.findGenericViewByPrevix(previx);
for (GenericView gv:list) {
if(gv.getKdGenericView()==1){
genericView=gv;
}
}
return genericView;
}
@Test
@Transactional
public void testPAPEliminasiDaoFindAll() {
PapEliminasi model1 = populateModel();
PapEliminasi resultModel1=papEliminasiDao.save(model1);
PapEliminasi model2 = populateModel();
PapEliminasi resultModel2=papEliminasiDao.save(model2);
assertNotNull(resultModel1);
assertNotNull(resultModel2);
List<PapEliminasi> results = (List<PapEliminasi>) papEliminasiDao.findAll();
assertTrue(results.size() > 0);
assertNotNull(results);
assertTrue(results.size() == 2);
}
*/
}

View File

@ -1,103 +0,0 @@
package com.jasamedika.medifirst2000.dao.test;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import java.util.List;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.transaction.annotation.Transactional;
import com.jasamedika.medifirst2000.dao.GenericViewDao;
import com.jasamedika.medifirst2000.dao.PapGastrointestinalDao;
import com.jasamedika.medifirst2000.entities.GenericView;
import com.jasamedika.medifirst2000.entities.PapGastrointestinal;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath*:com/jasamedika/**/applicationContext.xml")
public class PapGastrointestinalDaoTest {
@Autowired
private GenericViewDao genericViewDao;
@Autowired
private PapGastrointestinalDao papGastrointestinalDao;
@Test
@Transactional
public void testGenericDaoSelect() {
GenericView mulut = populateGenericView("Mulut");
assertNotNull(mulut);
assertEquals("1", String.valueOf(mulut.getKdGenericView()));
}
@Test
@Transactional
public void testPAPGastrointestinalDaoSave() {
PapGastrointestinal model = populateModel();
PapGastrointestinal resultModel=papGastrointestinalDao.save(model);
assertNotNull(resultModel);
assertNotNull(resultModel.getMulut());
// assertEquals("1", String.valueOf(resultModel.getMulut().getKdGenericView()));
//assertEquals(true,resultModel.getIsAscites());
//assertEquals(true,resultModel.getIsMual());
//assertEquals(true,resultModel.getIsMuntah());
//assertEquals(true,resultModel.getIsNyeriUluHati());
assertEquals("1",resultModel.getPeristaltikUsus());
assertEquals("2",resultModel.getLingkarPerut());
PapGastrointestinal resultModel2=papGastrointestinalDao.findOne(resultModel.getNoRec());
assertNotNull(resultModel2);
assertNotNull(resultModel2.getMulut());
// assertEquals("1", String.valueOf(resultModel2.getMulut().getKdGenericView()));
// assertEquals(true,resultModel2.getIsAscites());
// assertEquals(true,resultModel2.getIsMual());
// assertEquals(true,resultModel2.getIsMuntah());
// assertEquals(true,resultModel2.getIsNyeriUluHati());
assertEquals("1",resultModel2.getPeristaltikUsus());
assertEquals("2",resultModel2.getLingkarPerut());
}
private PapGastrointestinal populateModel() {
PapGastrointestinal model=new PapGastrointestinal();
GenericView mulut = populateGenericView("Mulut");
// model.setMulut(mulut);
// model.setIsAscites(true);
// model.setIsMual(true);
// model.setIsMuntah(true);
// model.setIsNyeriUluHati(true);
model.setPeristaltikUsus("1");
model.setLingkarPerut("2");
return model;
}
private GenericView populateGenericView(String previx) {
GenericView genericView=new GenericView();
List<GenericView> list=genericViewDao.findGenericViewByPrevix(previx);
for (GenericView gv:list) {
if(gv.getKdGenericView()==1){
genericView=gv;
}
}
return genericView;
}
@Test
@Transactional
public void testPAPGastrointestinalDaoFindAll() {
PapGastrointestinal model1 = populateModel();
PapGastrointestinal resultModel1=papGastrointestinalDao.save(model1);
PapGastrointestinal model2 = populateModel();
PapGastrointestinal resultModel2=papGastrointestinalDao.save(model2);
assertNotNull(resultModel1);
assertNotNull(resultModel2);
List<PapGastrointestinal> results = (List<PapGastrointestinal>) papGastrointestinalDao.findAll();
assertTrue(results.size() > 0);
assertNotNull(results);
assertTrue(results.size() == 2);
}
}

View File

@ -1,152 +0,0 @@
package com.jasamedika.medifirst2000.dao.test;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
/**Agama Class Test
*/
import static org.junit.Assert.assertNull;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.transaction.annotation.Transactional;
import com.jasamedika.medifirst2000.entities.GenericView;
import com.jasamedika.medifirst2000.entities.JenisKelamin;
import com.jasamedika.medifirst2000.entities.PapCatatan;
import com.jasamedika.medifirst2000.entities.PapGenatalia;
import com.jasamedika.medifirst2000.entities.PapRiwayatPsikososial;
import com.jasamedika.medifirst2000.entities.Pasien;
import com.jasamedika.medifirst2000.entities.Pendidikan;
import com.jasamedika.medifirst2000.entities.RegistrasiPelayananPasien;
import com.jasamedika.medifirst2000.dao.GenericViewDao;
import com.jasamedika.medifirst2000.dao.PapGenataliaDao;
import com.jasamedika.medifirst2000.dao.PasienDao;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath*:com/jasamedika/**/applicationContext.xml")
public class PapGenataliaDaoTest {
@Autowired
private PapGenataliaDao papGenataliaDao;
@Autowired
private PasienDao pasienDao;
@Test
@Transactional
public void testPapGenetaliaDaoSave(){
PapGenatalia model = populateModel();
PapGenatalia result = papGenataliaDao.save(model);
assertNotNull(result);
assertEquals(result.getKeterangan(),"Keterangan Genatalia");
assertEquals(result.getStatus(),"Status Genatalia");
assertNotNull(result.getRegistrasiPelayananPasien());
assertEquals(result.getRegistrasiPelayananPasien().getNamaTempatTujuan(),"Nama Tempat Tujuan");
assertNotNull(result.getPasien());
assertEquals(result.getPasien().getUmur(),"Umur Pasien");
}
@Test
@Transactional
public void testPapGenataliaDaoUpdate(){
PapGenatalia model = populateModel();
PapGenatalia resultModel1 = papGenataliaDao.save(model);
assertNotNull(resultModel1);
/*Proses Update*/
PapGenatalia resultModel2 = papGenataliaDao.findOne(model.getNoRec());
resultModel2.setKeterangan("Keterangan Update");
resultModel2.setStatus("Status Update");
Pasien pasien = new Pasien();
pasien.setUmur("Umur Update");
resultModel2.setPasien(pasien);
RegistrasiPelayananPasien registrasiPelayananPasien = new RegistrasiPelayananPasien();
registrasiPelayananPasien.setNamaTempatTujuan("Tujuan Update");
resultModel2.setRegistrasiPelayananPasien(registrasiPelayananPasien);
papGenataliaDao.save(resultModel2);
/*Cek Nilai Update di DB*/
PapGenatalia resultModel3 = papGenataliaDao.findOne(model.getNoRec());
assertEquals("Keterangan Update",resultModel3.getKeterangan());
assertEquals("Status Update",resultModel3.getStatus());
assertEquals("Umur Update",resultModel3.getPasien().getUmur());
assertEquals("Tujuan Update",resultModel3.getRegistrasiPelayananPasien().getNamaTempatTujuan());
}
// @Test
@Transactional
public void testPapGenetaliaDaoFindAll(){
/* Model 1 */
PapGenatalia model = populateModel();
PapGenatalia resultModel = papGenataliaDao.save(model);
assertNotNull(resultModel);
assertNotNull(resultModel.getKeterangan());
/* Model 2*/
PapGenatalia model2 = populateModel();
PapGenatalia resultModel2 = papGenataliaDao.save(model2);
assertNotNull(resultModel2);
assertNotNull(resultModel2.getKeterangan());
/* Cek Model di Database */
try {
List<PapGenatalia> hasil = toList(papGenataliaDao.findAll());
assertNotNull(hasil);
} catch (Exception e) {
}
}
@Test
@Transactional
public void testPapGenetaliaDaoDelete(){
PapGenatalia model1 = populateModel();
PapGenatalia resultModel = papGenataliaDao.save(model1);
assertNotNull(resultModel);
assertNotNull(resultModel.getKeterangan());
PapGenatalia result1 = papGenataliaDao.findOne(model1.getNoRec());
assertNotNull(result1);
papGenataliaDao.delete(model1);
result1 = papGenataliaDao.findOne(model1.getNoRec());
assertNull(result1);
}
/* Source : */
/* http://www.java2s.com/Code/Java/Collections-Data-Structure/ConvertIterabletoList.htm */
public static <E> List<E> toList(Iterable<E> iterable) {
if(iterable instanceof List) {
return (List<E>) iterable;
}
ArrayList<E> list = new ArrayList<E>();
if(iterable != null) {
for(E e: iterable) {
list.add(e);
}
}
return list;
}
public PapGenatalia populateModel(){
PapGenatalia model = new PapGenatalia();
RegistrasiPelayananPasien registrasiPelayananPasien = new RegistrasiPelayananPasien();
registrasiPelayananPasien.setNamaTempatTujuan("Nama Tempat Tujuan");
Pasien pasien = pasienDao.findOne(541);
pasien.setUmur("Umur Pasien");
model.setRegistrasiPelayananPasien(registrasiPelayananPasien);
model.setPasien(pasien);
model.setStatus("Status Genatalia");
model.setKeterangan("Keterangan Genatalia");
return model;
}
}

View File

@ -1,79 +0,0 @@
package com.jasamedika.medifirst2000.dao.test;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import java.util.Date;
import java.util.List;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.transaction.annotation.Transactional;
import com.jasamedika.medifirst2000.dao.GenericViewDao;
import com.jasamedika.medifirst2000.dao.PapEliminasiDao;
import com.jasamedika.medifirst2000.dao.PapKeluhanTambahanDao;
import com.jasamedika.medifirst2000.dao.PapKeluhanUtamaDao;
import com.jasamedika.medifirst2000.dao.PasienDao;
import com.jasamedika.medifirst2000.dao.RegistrasiPelayananPasienDao;
import com.jasamedika.medifirst2000.entities.GenericView;
import com.jasamedika.medifirst2000.entities.PapEliminasi;
import com.jasamedika.medifirst2000.entities.PapKeluhanTambahan;
import com.jasamedika.medifirst2000.entities.PapKeluhanUtama;
import com.jasamedika.medifirst2000.entities.PapMuskuloskeletal;
import com.jasamedika.medifirst2000.entities.Pasien;
import com.jasamedika.medifirst2000.entities.RegistrasiPelayananPasien;
import com.jasamedika.medifirst2000.util.DateUtil;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath*:com/jasamedika/**/applicationContext.xml")
public class PapKeluhanUtamaDaoTest {/*
@Autowired
private PapKeluhanUtamaDao papKeluhanUtamaDao;
@Autowired
private PasienDao pasienDao;
@Test
@Transactional
public void testPAPMuskuloskeletalDaoSave() {
PapKeluhanUtama model = populateModel();
PapKeluhanUtama resultModel=papKeluhanUtamaDao.save(model);
assertNotNull(resultModel);
// assertEquals(false, resultModel.getIsKelainanTulangAda());
// assertEquals(true, resultModel.getIsGerakanAnakBebas());
PapKeluhanUtama resultModel2=papKeluhanUtamaDao.findOne("40288cd955ec500d0155ed88a93b0004");
assertNotNull(resultModel2);
// assertEquals(false, resultModel2.getIsKelainanTulangAda());
// assertEquals(true, resultModel2.getIsGerakanAnakBebas());
resultModel2=populateModelUpdate();
PapKeluhanUtama resultModelUpdate=papKeluhanUtamaDao.save(resultModel2);
assertNotNull(resultModelUpdate);
assertEquals("abcd", resultModelUpdate.getKeluhanUtama());
// assertEquals(false, resultModelUpdate.getIsGerakanAnakBebas());
}
private PapKeluhanUtama populateModel() {
Pasien pasien=new Pasien();
pasien.setId(535);
PapKeluhanUtama keluhanUtama=new PapKeluhanUtama();
keluhanUtama.setPasien(pasien);
keluhanUtama.setKeluhanUtama("abc");
return keluhanUtama;
}
private PapKeluhanUtama populateModelUpdate() {
Pasien pasien=new Pasien();
pasien.setId(535);
PapKeluhanUtama keluhanUtama=new PapKeluhanUtama();
keluhanUtama.setPasien(pasien);
keluhanUtama.setKeluhanUtama("abcd");
return keluhanUtama;
}
*/}

View File

@ -1,93 +0,0 @@
package com.jasamedika.medifirst2000.dao.test;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
/**Agama Class Test
*/
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.transaction.annotation.Transactional;
import com.jasamedika.medifirst2000.entities.GenericView;
import com.jasamedika.medifirst2000.entities.PapAlergi;
import com.jasamedika.medifirst2000.entities.PapMuskuloskeletal;
import com.jasamedika.medifirst2000.entities.Pasien;
import com.jasamedika.medifirst2000.entities.RegistrasiPelayananPasien;
import com.jasamedika.medifirst2000.dao.GenericViewDao;
import com.jasamedika.medifirst2000.dao.PapAlergiDao;
import com.jasamedika.medifirst2000.dao.PapMuskuloskeletalDao;
import com.jasamedika.medifirst2000.dao.PasienDao;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath*:com/jasamedika/**/applicationContext.xml")
public class PapMuskoskeletalDaoTest {
@Autowired
private PapMuskuloskeletalDao papMuskuloskeletalDao;
@Autowired
private PasienDao pasienDao;
@Test
@Transactional
public void testPapAlergiDaoSave(){
PapMuskuloskeletal model = populateModel();
PapMuskuloskeletal result = papMuskuloskeletalDao.save(model);
assertNotNull(result);
assertNotNull(result.getRegistrasiPelayananPasien());
assertEquals(result.getRegistrasiPelayananPasien().getNamaTempatTujuan(),"Nama Tempat Tujuan");
assertNotNull(result.getPasien());
assertEquals(result.getPasien().getUmur(),"Umur Pasien");
assertNotNull(result.getTglInput());
assertTrue(result.getStatusEnabled());
PapMuskuloskeletal resultSelect = papMuskuloskeletalDao.findOne(model.getNoRec());
assertNotNull(resultSelect);
assertNotNull(resultSelect.getRegistrasiPelayananPasien());
assertEquals(resultSelect.getRegistrasiPelayananPasien().getNamaTempatTujuan(),"Nama Tempat Tujuan");
assertNotNull(resultSelect.getPasien());
assertEquals(resultSelect.getPasien().getUmur(),"Umur Pasien");
assertNotNull(resultSelect.getTglInput());
assertTrue(resultSelect.getStatusEnabled());
}
@Test
@Transactional
public void testPapAlergiDaoUpdate(){
PapMuskuloskeletal model = populateModel();
PapMuskuloskeletal result = papMuskuloskeletalDao.save(model);
assertNotNull(result);
}
// @Test
@Transactional
public void testPapAlergiDaoDelete(){
}
public PapMuskuloskeletal populateModel(){
PapMuskuloskeletal model = new PapMuskuloskeletal();
RegistrasiPelayananPasien registrasiPelayananPasien = new RegistrasiPelayananPasien();
registrasiPelayananPasien.setNamaTempatTujuan("Nama Tempat Tujuan");
Pasien pasien = pasienDao.findOne(393);
pasien.setUmur("Umur Pasien");
model.setRegistrasiPelayananPasien(registrasiPelayananPasien);
model.setPasien(pasien);
model.setTglInput(new Date());
model.setStatusEnabled(true);
return model;
}
}

View File

@ -1,74 +0,0 @@
package com.jasamedika.medifirst2000.dao.test;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import java.util.List;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.transaction.annotation.Transactional;
import com.jasamedika.medifirst2000.dao.PapMuskuloskeletalDao;
import com.jasamedika.medifirst2000.entities.PapMuskuloskeletal;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath*:com/jasamedika/**/applicationContext.xml")
public class PapMuskuloskeletalDaoTest {
@Autowired
private PapMuskuloskeletalDao papMuskuloskeletalDao;
@Test
@Transactional
public void testPAPMuskuloskeletalDaoSave() {
PapMuskuloskeletal model = populateModel();
PapMuskuloskeletal resultModel=papMuskuloskeletalDao.save(model);
assertNotNull(resultModel);
// assertEquals(false, resultModel.getIsKelainanTulangAda());
// assertEquals(true, resultModel.getIsGerakanAnakBebas());
PapMuskuloskeletal resultModel2=papMuskuloskeletalDao.findOne(resultModel.getNoRec());
assertNotNull(resultModel2);
// assertEquals(false, resultModel2.getIsKelainanTulangAda());
// assertEquals(true, resultModel2.getIsGerakanAnakBebas());
resultModel2=populateModelUpdate();
PapMuskuloskeletal resultModelUpdate=papMuskuloskeletalDao.save(resultModel2);
assertNotNull(resultModelUpdate);
// assertEquals(true, resultModelUpdate.getIsKelainanTulangAda());
// assertEquals(false, resultModelUpdate.getIsGerakanAnakBebas());
}
private PapMuskuloskeletal populateModel() {
PapMuskuloskeletal model=new PapMuskuloskeletal();
// model.setIsKelainanTulangAda(false);
// model.setIsGerakanAnakBebas(true);
return model;
}
private PapMuskuloskeletal populateModelUpdate() {
PapMuskuloskeletal model=new PapMuskuloskeletal();
// model.setIsKelainanTulangAda(true);
// model.setIsGerakanAnakBebas(false);
return model;
}
@Test
@Transactional
public void testPAPMuskuloskeletalDaoFindAll() {
PapMuskuloskeletal model = populateModel();
PapMuskuloskeletal resultModel1=papMuskuloskeletalDao.save(model);
PapMuskuloskeletal model2 = populateModel();
PapMuskuloskeletal resultModel2=papMuskuloskeletalDao.save(model2);
assertNotNull(resultModel1);
assertNotNull(resultModel2);
List<PapMuskuloskeletal> results = (List<PapMuskuloskeletal>) papMuskuloskeletalDao.findAll();
assertTrue(results.size() > 0);
assertNotNull(results);
assertTrue(results.size() == 2);
}
}

View File

@ -1,88 +0,0 @@
package com.jasamedika.medifirst2000.dao.test;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import java.util.List;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.transaction.annotation.Transactional;
import com.jasamedika.medifirst2000.dao.GenericViewDao;
import com.jasamedika.medifirst2000.dao.PapNeurologiDao;
import com.jasamedika.medifirst2000.entities.GenericView;
import com.jasamedika.medifirst2000.entities.PapNeurologi;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath*:com/jasamedika/**/applicationContext.xml")
public class PapNeurologiDaoTest {
@Autowired
private GenericViewDao genericViewDao;
@Autowired
private PapNeurologiDao papNeurologiDao;
@Test
@Transactional
public void testGenericDaoSelect() {
GenericView kesadaran = populateGenericView("Kesadaran");
assertNotNull(kesadaran);
assertEquals("1", String.valueOf(kesadaran.getKdGenericView()));
}
@Test
@Transactional
public void testPAPNeurologiDaoSave() {
PapNeurologi model = populateModel();
PapNeurologi resultModel=papNeurologiDao.save(model);
assertNotNull(resultModel);
assertNotNull(resultModel.getKesadaran());
// assertEquals(true,resultModel.getIsGangguanNeorologis());
// assertEquals("1", String.valueOf(resultModel.getKesadaran().getKdGenericView()));
PapNeurologi resultModel2=papNeurologiDao.findOne(resultModel.getNoRec());
assertNotNull(resultModel2);
assertNotNull(resultModel2.getKesadaran());
// assertEquals("1", String.valueOf(resultModel2.getKesadaran().getKdGenericView()));
// assertEquals(true,resultModel.getIsGangguanNeorologis());
}
private PapNeurologi populateModel() {
PapNeurologi model=new PapNeurologi();
GenericView kesadaran = populateGenericView("Kesadaran");
// model.setKesadaran(kesadaran);
// model.setIsGangguanNeorologis(true);
return model;
}
private GenericView populateGenericView(String previx) {
GenericView genericView=new GenericView();
List<GenericView> list=genericViewDao.findGenericViewByPrevix(previx);
for (GenericView gv:list) {
if(gv.getKdGenericView()==1){
genericView=gv;
}
}
return genericView;
}
@Test
@Transactional
public void testPAPNeurologiDaoFindAll() {
PapNeurologi model1 = populateModel();
PapNeurologi resultModel1=papNeurologiDao.save(model1);
PapNeurologi model2 = populateModel();
PapNeurologi resultModel2=papNeurologiDao.save(model2);
assertNotNull(resultModel1);
assertNotNull(resultModel2);
List<PapNeurologi> results = (List<PapNeurologi>) papNeurologiDao.findAll();
assertTrue(results.size() > 0);
assertNotNull(results);
assertTrue(results.size() == 2);
}
}

View File

@ -1,112 +0,0 @@
package com.jasamedika.medifirst2000.dao.test;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import java.util.List;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.transaction.annotation.Transactional;
import com.jasamedika.medifirst2000.dao.GenericViewDao;
import com.jasamedika.medifirst2000.dao.PapPernapasanDao;
import com.jasamedika.medifirst2000.entities.GenericView;
import com.jasamedika.medifirst2000.entities.PapPernapasan;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath*:com/jasamedika/**/applicationContext.xml")
public class PapPernapasanDaoTest {
@Autowired
private GenericViewDao genericViewDao;
@Autowired
private PapPernapasanDao papPernapasanDao;
@Test
@Transactional
public void testGenericDaoSelect() {
GenericView alatBantuNafas = populateGenericView("Alat bantu nafas");
assertNotNull(alatBantuNafas);
assertEquals("1", String.valueOf(alatBantuNafas.getKdGenericView()));
}
@Test
@Transactional
public void testPAPPernapasanDaoSave() {
PapPernapasan model = populateModel();
PapPernapasan resultModel=papPernapasanDao.save(model);
assertNotNull(resultModel);
assertNotNull(resultModel.getAlatBantuNafas());
// assertEquals("1", String.valueOf(resultModel.getAlatBantuNafas().getKdGenericView()));
/*
assertEquals(true,resultModel.getIsBentukDada());
assertEquals(true,resultModel.getIsIrama());
assertEquals(true,resultModel.getIsNafasKupingHidung());
assertEquals(true,resultModel.getIsPolaNapas());
assertEquals(true,resultModel.getIsRetraksiDada());
assertEquals(true,resultModel.getIsSianosis());
assertEquals(true,resultModel.getIsSuaraNapas());
*/
PapPernapasan resultModel2=papPernapasanDao.findOne(resultModel.getNoRec());
assertNotNull(resultModel2);
assertNotNull(resultModel2.getAlatBantuNafas());
// assertEquals("1", String.valueOf(resultModel2.getAlatBantuNafas().getKdGenericView()));
/*
assertEquals(true,resultModel2.getIsBentukDada());
assertEquals(true,resultModel2.getIsIrama());
assertEquals(true,resultModel2.getIsNafasKupingHidung());
assertEquals(true,resultModel2.getIsPolaNapas());
assertEquals(true,resultModel2.getIsRetraksiDada());
assertEquals(true,resultModel2.getIsSianosis());
assertEquals(true,resultModel2.getIsSuaraNapas());
*/
}
private PapPernapasan populateModel() {
PapPernapasan model=new PapPernapasan();
GenericView alatBantuNafas = populateGenericView("Alat bantu nafas");
// model.setAlatBantuNafas(alatBantuNafas);
/*
model.setIsBentukDada(true);
model.setIsIrama(true);
model.setIsNafasKupingHidung(true);
model.setIsPolaNapas(true);
model.setIsRetraksiDada(true);
model.setIsSianosis(true);
model.setIsSuaraNapas(true);
*/
return model;
}
private GenericView populateGenericView(String previx) {
GenericView genericView=new GenericView();
List<GenericView> list=genericViewDao.findGenericViewByPrevix(previx);
for (GenericView gv:list) {
if(gv.getKdGenericView()==1){
genericView=gv;
}
}
return genericView;
}
@Test
@Transactional
public void testPAPPernapasanDaoFindAll() {
PapPernapasan model1 = populateModel();
PapPernapasan resultModel1=papPernapasanDao.save(model1);
PapPernapasan model2 = populateModel();
PapPernapasan resultModel2=papPernapasanDao.save(model2);
assertNotNull(resultModel1);
assertNotNull(resultModel2);
List<PapPernapasan> results = (List<PapPernapasan>) papPernapasanDao.findAll();
assertTrue(results.size() > 0);
assertNotNull(results);
assertTrue(results.size() == 2);
}
}

View File

@ -1,131 +0,0 @@
package com.jasamedika.medifirst2000.dao.test;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import java.util.Date;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.transaction.annotation.Transactional;
import com.jasamedika.medifirst2000.dao.OrderPelayananDao;
import com.jasamedika.medifirst2000.dao.PapPernapasanDao;
import com.jasamedika.medifirst2000.dao.PapRencanaOrderRadiologiDao;
import com.jasamedika.medifirst2000.dao.PasienDao;
import com.jasamedika.medifirst2000.dao.RegistrasiPelayananPasienDao;
import com.jasamedika.medifirst2000.dao.StrukOrderDao;
import com.jasamedika.medifirst2000.entities.GenericView;
import com.jasamedika.medifirst2000.entities.OrderPelayanan;
import com.jasamedika.medifirst2000.entities.PapPernapasan;
import com.jasamedika.medifirst2000.entities.PapRencanaOrderRadiologi;
import com.jasamedika.medifirst2000.entities.Pasien;
import com.jasamedika.medifirst2000.entities.Produk;
import com.jasamedika.medifirst2000.entities.RegistrasiPelayananPasien;
import com.jasamedika.medifirst2000.entities.StrukOrder;
import com.jasamedika.medifirst2000.util.DateUtil;
import com.jasamedika.medifirst2000.vo.ProdukVO;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath*:com/jasamedika/**/applicationContext.xml")
public class PapRadiologiDaoTest {
@Autowired
private OrderPelayananDao orderPelayananDao;
@Autowired
private StrukOrderDao strukOrderDao;
@Autowired
private PasienDao pasienDao;
@Autowired
private PapRencanaOrderRadiologiDao papRencanaOrderRadiologiDao;
@Autowired
private RegistrasiPelayananPasienDao registrasiPelayananPasienDao;
private Pasien pasien;
private RegistrasiPelayananPasien registrasiPelayananPasien;
private Date date=new Date();
private String tgl="2016-06-23 ";
@Test
@Transactional
public void testFindPasien() {
pasien=pasienDao.findOne(177);
assertNotNull(pasien);
assertEquals("0000001",pasien.getNoCm());
}
@Test
@Transactional
public void testFindRegistrasiPelayananPasien() {
registrasiPelayananPasien=registrasiPelayananPasienDao.finByNoCm("0000001", (short)0, DateUtil.toDate(tgl));
assertNotNull(registrasiPelayananPasien);
}
@Test
@Transactional
public void testGenerateNoOrder() {
Integer abc=strukOrderDao.getCountByMonthAndYear(date);
System.out.println("OOOOOO : "+abc);
}
@Test
@Transactional
public void testRadiologiSave() {
PapRencanaOrderRadiologi model=populateRencanaOrderRadiologi();
PapRencanaOrderRadiologi resultModel=papRencanaOrderRadiologiDao.save(model);
assertNotNull(resultModel);
assertNotNull(resultModel.getPasien());
assertEquals("0000001",resultModel.getPasien().getNoCm());
StrukOrder strukOrder=populateStrukOrder();
StrukOrder abc=strukOrderDao.save(strukOrder);
assertNotNull(abc);
assertEquals("11111",abc.getNoOrder());
Produk produk1=populateProduk("produk1");
OrderPelayanan orderPelayanan=populateOrderPelayanan();
orderPelayanan.setNoOrder(abc);
orderPelayanan.setProduk(produk1);
assertNotNull(produk1);
assertEquals("produk1",produk1.getNamaProduk());
OrderPelayanan abcd=orderPelayananDao.save(orderPelayanan);
assertNotNull(abcd);
assertNotNull(abcd.getProduk());
assertNotNull(abcd.getNoOrder());
assertEquals("produk1",abcd.getProduk().getNamaProduk());
resultModel.setStrukOrder(strukOrder);
assertNotNull(resultModel.getStrukOrder());
assertEquals("11111",resultModel.getStrukOrder().getNoOrder());
// model.setStrukOrder(strukOrder);
// for(ProdukVO produk:vo.getProdukSet()){
// Produk prod=produkConverter.transferVOToModel(produk, new Produk());
// produkDao.save(prod);
// orderPelayanan.setProduk(prod);
// }
}
private StrukOrder populateStrukOrder() {
StrukOrder model=new StrukOrder();
model.setNoOrder("11111");
return model;
}
private Produk populateProduk(String produk) {
Produk produk1=new Produk();
produk1.setId(1);
produk1.setNamaProduk(produk);
return produk1;
}
private OrderPelayanan populateOrderPelayanan() {
OrderPelayanan model=new OrderPelayanan();
return model;
}
private PapRencanaOrderRadiologi populateRencanaOrderRadiologi() {
PapRencanaOrderRadiologi model=new PapRencanaOrderRadiologi();
model.setKeluhan("aaaaaaaaa");
model.setPasien(pasienDao.findOne(177));
model.setRegistrasiPelayananPasien(registrasiPelayananPasienDao.finByNoCm("0000001", (short)0, DateUtil.toDate(tgl)));
model.setTglInput(date);
return model;
}
}

View File

@ -1,103 +0,0 @@
package com.jasamedika.medifirst2000.dao.test;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import java.util.List;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.transaction.annotation.Transactional;
import com.jasamedika.medifirst2000.dao.GenericViewDao;
import com.jasamedika.medifirst2000.dao.PapRiwayatKeluargaDao;
import com.jasamedika.medifirst2000.entities.GenericView;
import com.jasamedika.medifirst2000.entities.PapRiwayatKeluarga;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath*:com/jasamedika/**/applicationContext.xml")
public class PapRiwayatKeluargaDaoTest {
@Autowired
private GenericViewDao genericViewDao;
@Autowired
private PapRiwayatKeluargaDao papRiwayatKeluargaDao;
@Test
@Transactional
public void testGenericDaoSelect() {
}
@Test
@Transactional
public void testPAPRiwayatKeluargaDaoSave() {
PapRiwayatKeluarga model = populateModel();
PapRiwayatKeluarga resultModel=papRiwayatKeluargaDao.save(model);
assertNotNull(resultModel);
assertEquals("1",resultModel.getNamaIbu());
assertEquals("1",resultModel.getUmurIbu());
assertEquals("1",resultModel.getBangsaIbu());
assertEquals("1",resultModel.getKesehatanIbu());
assertEquals("1",resultModel.getNamaAyah());
assertEquals("1",resultModel.getUmurAyah());
assertEquals("1",resultModel.getBangsaAyah());
assertEquals("1",resultModel.getKesehatanAyah());
assertEquals("1",resultModel.getAnakAnakLain());
PapRiwayatKeluarga resultModel2=papRiwayatKeluargaDao.findOne(resultModel.getNoRec());
assertNotNull(resultModel2);
assertEquals("1",resultModel.getNamaIbu());
assertEquals("1",resultModel.getUmurIbu());
assertEquals("1",resultModel.getBangsaIbu());
assertEquals("1",resultModel.getKesehatanIbu());
assertEquals("1",resultModel.getNamaAyah());
assertEquals("1",resultModel.getUmurAyah());
assertEquals("1",resultModel.getBangsaAyah());
assertEquals("1",resultModel.getKesehatanAyah());
assertEquals("1",resultModel.getAnakAnakLain());
}
private PapRiwayatKeluarga populateModel() {
PapRiwayatKeluarga model=new PapRiwayatKeluarga();
model.setNamaIbu("1");
model.setUmurIbu("1");
model.setBangsaIbu("1");
model.setKesehatanIbu("1");
model.setNamaAyah("1");
model.setUmurAyah("1");
model.setBangsaAyah("1");
model.setKesehatanAyah("1");
model.setAnakAnakLain("1");
return model;
}
private GenericView populateGenericView(String previx) {
GenericView genericView=new GenericView();
List<GenericView> list=genericViewDao.findGenericViewByPrevix(previx);
for (GenericView gv:list) {
if(gv.getKdGenericView()==1){
genericView=gv;
}
}
return genericView;
}
@Test
@Transactional
public void testPAPRiwayatKeluargaDaoFindAll() {
PapRiwayatKeluarga model1 = populateModel();
PapRiwayatKeluarga resultModel1=papRiwayatKeluargaDao.save(model1);
PapRiwayatKeluarga model2 = populateModel();
PapRiwayatKeluarga resultModel2=papRiwayatKeluargaDao.save(model2);
assertNotNull(resultModel1);
assertNotNull(resultModel2);
List<PapRiwayatKeluarga> results = (List<PapRiwayatKeluarga>) papRiwayatKeluargaDao.findAll();
assertTrue(results.size() > 0);
assertNotNull(results);
assertTrue(results.size() == 2);
}
}

View File

@ -1,97 +0,0 @@
package com.jasamedika.medifirst2000.dao.test;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import java.util.List;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.transaction.annotation.Transactional;
import com.jasamedika.medifirst2000.dao.GenericViewDao;
import com.jasamedika.medifirst2000.dao.PapRiwayatPsikososialDao;
import com.jasamedika.medifirst2000.dao.PapRiwayatPsikososialDao;
import com.jasamedika.medifirst2000.entities.GenericView;
import com.jasamedika.medifirst2000.entities.PapRiwayatPsikososial;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath*:com/jasamedika/**/applicationContext.xml")
public class PapRiwayatPsikososialDaoTest {
@Autowired
private GenericViewDao genericViewDao;
@Autowired
private PapRiwayatPsikososialDao papRiwayatPsikososialDao;
@Test
@Transactional
public void testGenericDaoSelect() {
GenericView statusPsikologi = populateGenericView("Status Psikologi");
GenericView tempatTinggal = populateGenericView("Tempat Tinggal");
assertNotNull(statusPsikologi);
assertNotNull(tempatTinggal);
assertEquals("1", String.valueOf(statusPsikologi.getKdGenericView()));
assertEquals("1", String.valueOf(tempatTinggal.getKdGenericView()));
}
@Test
@Transactional
public void testPAPRiwayatPsikososialDaoSave() {
PapRiwayatPsikososial model = populateModel();
PapRiwayatPsikososial resultModel=papRiwayatPsikososialDao.save(model);
assertNotNull(resultModel);
// assertNotNull(resultModel.getStatusPsikologi());
// assertNotNull(resultModel.getTempatTinggal());
// assertEquals(true, resultModel.getIsHubunganPasien());
// assertEquals("1",resultModel.getKecenderunganLainnya());
PapRiwayatPsikososial resultModel2=papRiwayatPsikososialDao.findOne(resultModel.getNoRec());
assertNotNull(resultModel2);
// assertNotNull(resultModel2.getStatusPsikologi());
// assertNotNull(resultModel2.getTempatTinggal());
// assertEquals(true, resultModel2.getIsHubunganPasien());
// assertEquals("1",resultModel2.getKecenderunganLainnya());
}
private PapRiwayatPsikososial populateModel() {
PapRiwayatPsikososial model=new PapRiwayatPsikososial();
GenericView statusPsikologi = populateGenericView("Status Psikologi");
GenericView tempatTinggal = populateGenericView("Tempat Tinggal");
// model.setStatusPsikologi(statusPsikologi);
// model.setTempatTinggal(tempatTinggal);
// model.setIsHubunganPasien(true);
// model.setKecenderunganLainnya("1");
return model;
}
private GenericView populateGenericView(String previx) {
GenericView genericView=new GenericView();
List<GenericView> list=genericViewDao.findGenericViewByPrevix(previx);
for (GenericView gv:list) {
if(gv.getKdGenericView()==1){
genericView=gv;
}
}
return genericView;
}
@Test
@Transactional
public void testPAPRiwayatPsikososialDaoFindAll() {
PapRiwayatPsikososial model1 = populateModel();
PapRiwayatPsikososial resultModel1=papRiwayatPsikososialDao.save(model1);
PapRiwayatPsikososial model2 = populateModel();
PapRiwayatPsikososial resultModel2=papRiwayatPsikososialDao.save(model2);
assertNotNull(resultModel1);
assertNotNull(resultModel2);
List<PapRiwayatPsikososial> results = (List<PapRiwayatPsikososial>) papRiwayatPsikososialDao.findAll();
assertTrue(results.size() > 0);
assertNotNull(results);
assertTrue(results.size() == 2);
}
}

View File

@ -1,118 +0,0 @@
package com.jasamedika.medifirst2000.dao.test;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import java.util.List;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.transaction.annotation.Transactional;
import com.jasamedika.medifirst2000.dao.GenericViewDao;
import com.jasamedika.medifirst2000.dao.PapSirkulasiDao;
import com.jasamedika.medifirst2000.entities.GenericView;
import com.jasamedika.medifirst2000.entities.PapSirkulasi;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath*:com/jasamedika/**/applicationContext.xml")
public class PapSirkulasiDaoTest {
@Autowired
private GenericViewDao genericViewDao;
@Autowired
private PapSirkulasiDao papSirkulasiDao;
/*
@Test
@Transactional
public void testGenericDaoSelect() {
GenericView intensitasNadi = populateGenericView("Intensitas Nadi");
GenericView akral = populateGenericView("Akral");
GenericView crt = populateGenericView("CRT");
assertNotNull(intensitasNadi);
assertNotNull(akral);
assertNotNull(crt);
assertEquals("1", String.valueOf(intensitasNadi.getKdGenericView()));
assertEquals("1", String.valueOf(akral.getKdGenericView()));
assertEquals("1", String.valueOf(crt.getKdGenericView()));
}
@Test
@Transactional
public void testPAPSirkulasiDaoSave() {
PapSirkulasi model = populateModel();
PapSirkulasi resultModel=papSirkulasiDao.save(model);
assertNotNull(resultModel);
assertNotNull(resultModel.getIntensitasNadi());
assertNotNull(resultModel.getAkral());
assertNotNull(resultModel.getCrt());
assertEquals("1", String.valueOf(resultModel.getIntensitasNadi().getKdGenericView()));
assertEquals("1", String.valueOf(resultModel.getAkral().getKdGenericView()));
assertEquals("1", String.valueOf(resultModel.getCrt().getKdGenericView()));
assertEquals(true,resultModel.getIsSianosis());
assertEquals(true,resultModel.getIsPucat());
assertEquals(true,resultModel.getIsIramaNadi());
assertEquals(true,resultModel.getIsEdema());
assertEquals(true,resultModel.getIsClubbingFinger());
PapSirkulasi resultModel2=papSirkulasiDao.findOne(resultModel.getNoRec());
assertNotNull(resultModel2);
assertNotNull(resultModel2.getIntensitasNadi());
assertNotNull(resultModel2.getAkral());
assertNotNull(resultModel2.getCrt());
assertEquals("1", String.valueOf(resultModel2.getIntensitasNadi().getKdGenericView()));
assertEquals("1", String.valueOf(resultModel2.getAkral().getKdGenericView()));
assertEquals("1", String.valueOf(resultModel2.getCrt().getKdGenericView()));
assertEquals(true,resultModel.getIsSianosis());
assertEquals(true,resultModel.getIsPucat());
assertEquals(true,resultModel.getIsIramaNadi());
assertEquals(true,resultModel.getIsEdema());
assertEquals(true,resultModel.getIsClubbingFinger());
}
private PapSirkulasi populateModel() {
PapSirkulasi model=new PapSirkulasi();
GenericView intensitasNadi = populateGenericView("Intensitas Nadi");
GenericView akral = populateGenericView("Akral");
GenericView crt = populateGenericView("CRT");
model.setIntensitasNadi(intensitasNadi);
model.setAkral(akral);
model.setCrt(crt);
model.setIsSianosis(true);
model.setIsPucat(true);
model.setIsIramaNadi(true);
model.setIsEdema(true);
model.setIsClubbingFinger(true);
return model;
}
private GenericView populateGenericView(String previx) {
GenericView genericView=new GenericView();
List<GenericView> list=genericViewDao.findGenericViewByPrevix(previx);
for (GenericView gv:list) {
if(gv.getKdGenericView()==1){
genericView=gv;
}
}
return genericView;
}
@Test
@Transactional
public void testPAPSirkulasiDaoFindAll() {
PapSirkulasi model1 = populateModel();
PapSirkulasi resultModel1=papSirkulasiDao.save(model1);
PapSirkulasi model2 = populateModel();
PapSirkulasi resultModel2=papSirkulasiDao.save(model2);
assertNotNull(resultModel1);
assertNotNull(resultModel2);
List<PapSirkulasi> results = (List<PapSirkulasi>) papSirkulasiDao.findAll();
assertTrue(results.size() > 0);
assertNotNull(results);
assertTrue(results.size() == 2);
}
*/
}

View File

@ -1,121 +0,0 @@
//package com.jasamedika.medifirst2000.dao.test;
//
//import static org.junit.Assert.assertEquals;
//import static org.junit.Assert.assertNotNull;
//
///**Agama Class Test
// */
//
//import static org.junit.Assert.assertNull;
//
//import java.util.ArrayList;
//import java.util.Date;
//import java.util.List;
//
//import org.junit.Test;
//import org.junit.runner.RunWith;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.test.context.ContextConfiguration;
//import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
//import org.springframework.transaction.annotation.Transactional;
//
//import com.jasamedika.medifirst2000.entities.GenericView;
//import com.jasamedika.medifirst2000.entities.PapAlergi;
//import com.jasamedika.medifirst2000.entities.PapSkriningGizi;
//import com.jasamedika.medifirst2000.entities.Pasien;
//import com.jasamedika.medifirst2000.entities.RegistrasiPelayananPasien;
//import com.jasamedika.medifirst2000.dao.GenericViewDao;
//import com.jasamedika.medifirst2000.dao.PapSkriningGiziDao;
//import com.jasamedika.medifirst2000.dao.PasienDao;
//
//@RunWith(SpringJUnit4ClassRunner.class)
//@ContextConfiguration("classpath*:com/jasamedika/**/applicationContext.xml")
//public class PapSkriningGiziDaoTest {
//
// @Autowired
// private PapSkriningGiziDao papSkriningGiziDao;
//
// @Autowired
// private PasienDao pasienDao;
//
// @Test
// @Transactional
// public void testPapSkriningGiziDaoSave(){
// PapSkriningGizi model = populateModel();
// PapSkriningGizi result = papSkriningGiziDao.save(model);
//
// /* Cek Hasil save */
// assertNotNull(result);
// assertEquals(String.valueOf(result.getBeratBadan()),String.valueOf((float)60));
// assertEquals(String.valueOf(result.getLingkarKepala()),String.valueOf((float)50));
// assertEquals(String.valueOf(result.getTinggiBadan()),String.valueOf((float)170));
// assertNotNull(result.getTglInput());
// assertEquals(result.getRegistrasiPelayananPasien().getNamaTempatTujuan(),"Tujuan");
// assertEquals(result.getPasien().getNamaPasien(),"adik");
//
// /*Cek Model di Database*/
// PapSkriningGizi resultSelect = papSkriningGiziDao.findOne(model.getNoRec());
// assertNotNull(resultSelect);
// assertEquals(String.valueOf(resultSelect.getBeratBadan()),String.valueOf((float)60));
// assertEquals(String.valueOf(resultSelect.getLingkarKepala()),String.valueOf((float)50));
// assertEquals(String.valueOf(resultSelect.getTinggiBadan()),String.valueOf((float)170));
// assertNotNull(resultSelect.getTglInput());
// assertEquals(resultSelect.getRegistrasiPelayananPasien().getNamaTempatTujuan(),"Tujuan");
// assertEquals(resultSelect.getPasien().getNamaPasien(),"adik");
// }
//
// @Test
// @Transactional
// public void testPapSkriningGiziDaoUpdate(){
// PapSkriningGizi model = populateModel();
// PapSkriningGizi result = papSkriningGiziDao.save(model);
// assertNotNull(result);
//
// /*Proses Update*/
// result.setBeratBadan((float) 100);
// result.setLingkarKepala((float) 40);
// result.setTinggiBadan((float) 175);
// result.getPasien().setNamaPasien("Nama Update");
// result.getRegistrasiPelayananPasien().setNamaTempatTujuan("Tujuan Update");
// papSkriningGiziDao.save(result);
//
// /*Cek Hasil Update*/
// PapSkriningGizi resultSelect = papSkriningGiziDao.findOne(model.getNoRec());
// assertNotNull(resultSelect);
// assertEquals(String.valueOf(resultSelect.getBeratBadan()),String.valueOf((float)100));
// assertEquals(String.valueOf(resultSelect.getLingkarKepala()),String.valueOf((float)40));
// assertEquals(String.valueOf(resultSelect.getTinggiBadan()),String.valueOf((float)175));
// assertNotNull(resultSelect.getTglInput());
// assertEquals(resultSelect.getRegistrasiPelayananPasien().getNamaTempatTujuan(),"Tujuan Update");
// assertEquals(resultSelect.getPasien().getNamaPasien(),"Nama Update");
// }
//
// @Test
// @Transactional
// public void testPapSkriningGiziDaoDelete(){
// PapSkriningGizi model = populateModel();
// papSkriningGiziDao.save(model);
//
// PapSkriningGizi resultModel1 = papSkriningGiziDao.findOne(model.getNoRec());
// /*Cek Model di Database*/
// assertNotNull(resultModel1);
//
// papSkriningGiziDao.delete(model);
// PapSkriningGizi resultModel2 = papSkriningGiziDao.findOne(model.getNoRec());
// /*Cek Hasil Delete Model*/
// assertNull(resultModel2);
// }
//
// public PapSkriningGizi populateModel(){
// PapSkriningGizi model = new PapSkriningGizi();
// Pasien pasien = pasienDao.findOne(393);
// model.setPasien(pasien);
// model.setRegistrasiPelayananPasien(new RegistrasiPelayananPasien());
// model.getRegistrasiPelayananPasien().setNamaTempatTujuan("Tujuan");
// model.setTglInput(new Date());
// model.setTinggiBadan((float)170);
// model.setBeratBadan((float)60);
// model.setLingkarKepala((float) 50);
// return model;
// }
//}

View File

@ -1,31 +0,0 @@
package com.jasamedika.medifirst2000.dao.test;
/**Agama Class Test
*/
import static org.junit.Assert.assertNotNull;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import com.jasamedika.medifirst2000.dao.PasienMDao;
import com.jasamedika.medifirst2000.entities.Pasien;
//@RunWith(SpringJUnit4ClassRunner.class)
//@ContextConfiguration("classpath*:com/jasamedika/**/applicationContext.xml")
public class PasienDaoTest {
// @Autowired
private PasienMDao dao;
// @Test
public void testFindById() {
Pasien result = dao.findOne(1);
// System.out.println(result.getAlamats().size());
// assertNotNull(result.getAlamats());
assertNotNull(result);
}
}

View File

@ -1,33 +0,0 @@
package com.jasamedika.medifirst2000.dao.test;
/**RuanganMDao Class Test
*/
import static org.junit.Assert.assertNull;
import java.util.List;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import com.jasamedika.medifirst2000.dao.RuanganMDao;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath*:com/jasamedika/**/applicationContext.xml")
public class RuanganMDaoTest {
@Autowired
private RuanganMDao dao;
@Test
public void testNativeQuery() {
List<Object[]> result = dao.getNativeNamaKelas();
assertNull(result);
List<Object[]> result2 = dao.getNativeNamaRuangan("25", "26");
assertNull(result2);
}
}

View File

@ -1,101 +0,0 @@
package com.jasamedika.medifirst2000.dao.test;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Date;
import java.util.Map;
import java.util.Set;
import java.util.TreeMap;
import org.apache.commons.lang.time.DateUtils;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.CellStyle;
import org.apache.poi.ss.usermodel.Font;
import org.apache.poi.ss.usermodel.IndexedColors;
import org.apache.poi.ss.util.CellRangeAddress;
public class Testing {
public static void main(String[] args) throws IOException {// Create
// blank
// workbook
HSSFWorkbook workbook = new HSSFWorkbook();
// Create a blank sheet
HSSFSheet spreadsheet = workbook.createSheet(" Employee Info ");
// Create row object
HSSFRow row;
// This data needs to be written (Object[])
Map<String, Object[]> empinfo = new TreeMap<String, Object[]>();
CellStyle style = workbook.createCellStyle();
style.setFillForegroundColor(IndexedColors.AQUA.getIndex());
style.setFillPattern(CellStyle.SOLID_FOREGROUND);
Font font = workbook.createFont();
font.setColor(IndexedColors.BLACK.getIndex());
font.setBold(true);
style.setFont(font);
style.setWrapText(true);
CellStyle styleIsi = workbook.createCellStyle();
Font fontIsi = workbook.createFont();
fontIsi.setColor(IndexedColors.BLACK.getIndex());
fontIsi.setBold(false);
fontIsi.setFontName("Arial");
fontIsi.setFontHeightInPoints((short)8);
styleIsi.setFont(fontIsi);
styleIsi.setWrapText(true);
empinfo.put("01", new Object[] { "", "LAMPIRAN SURAT PENAWARAN HARGA OBAT TAHUN 2016 ", "", "" });
empinfo.put("02", new Object[] { "", "TAHUN 2016", "", "" });
empinfo.put("03", new Object[] { "", "EMP ID", "EMP NAME", "DESIGNATION" });
empinfo.put("04", new Object[] { "", "tp01", "Gopal", "Technical Manager" });
empinfo.put("05", new Object[] { "", "tp02", "Manisha", "Proof Reader" });
empinfo.put("06", new Object[] { "", "tp03", "Masthan", "Technical Writer" });
empinfo.put("07", new Object[] { "", "tp04", "Satish", "Technical Writer" });
empinfo.put("08", new Object[] { "", "tp05", "Krishna", "Technical Writer" });
empinfo.put("09", new Object[] { "", "tp06", "Krishna", "Technical Writer" });
empinfo.put("10", new Object[] { "", "tp07", "Krishna", "Technical Writer" });
empinfo.put("11", new Object[] { "", "tp08", "Krishna", "Technical Writer" });
empinfo.put("12", new Object[] { "", "tp09", "Krishna", "Technical Writer" });
empinfo.put("13", new Object[] { "", "tp10", "Krishna", "Technical Writer" });
empinfo.put("14", new Object[] { "", "tp11", "Krishna", "Technical Writer" });
empinfo.put("15", new Object[] { "", "tp12", "Krishna", "Technical Writer" });
empinfo.put("16", new Object[] { "", "tp13", "Krishna", "Technical Writer" });
// Iterate over data and write to sheet
Set<String> keyid = empinfo.keySet();
int rowid = 0;
for (String key : keyid) {
row = spreadsheet.createRow(rowid++);
Object[] objectArr = empinfo.get(key);
int cellid = 0;
for (Object obj : objectArr) {
Cell cell = row.createCell(cellid++);
if(key.equalsIgnoreCase("03") && cellid!=1){
System.out.println(cellid);
cell.setCellStyle(style);
}else{
cell.setCellStyle(styleIsi);
}
cell.setCellValue((String) obj);
}
}
spreadsheet.setColumnWidth(0, 1000);
spreadsheet.setColumnWidth(1, 7500);
spreadsheet.setColumnWidth(2, 7500);
spreadsheet.setColumnWidth(3, 7500);
spreadsheet.addMergedRegion(new CellRangeAddress(0, 0, 1, 4));
// Write the workbook in file system
FileOutputStream out = new FileOutputStream(new File("d:/Writesheet.xls"));
workbook.write(out);
out.close();
System.out.println("d:/Writesheet.xlsx written successfully");
}
}

View File

@ -1,52 +0,0 @@
package com.jasamedika.medifirst2000.logging;
/**Simple Logging Class Test
*/
import static org.junit.Assert.assertNotNull;
import java.util.List;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import com.jasamedika.medifirst2000.logging.dao.LoggingJdbcDaoImpl;
import com.jasamedika.medifirst2000.logging.entities.Logging;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath*:com/jasamedika/**/applicationContext.xml")
public class SimpleLoggingTest {
@Autowired
private LoggingJdbcDaoImpl loggingJdbcDaoImpl;
@Test
public void testCreate() {
loggingJdbcDaoImpl.create("nama", "deskripsi");
}
@Test
public void testUpdate() {
loggingJdbcDaoImpl.update(1, "nama xxx", "deskripsi xxx");
}
@Test
public void testDelete() {
loggingJdbcDaoImpl.delete(1);
}
@Test
public void testGetAll() {
List<Logging> results = loggingJdbcDaoImpl.listLoggings();
assertNotNull(results);
}
@Test
public void testGetById() {
Logging result = loggingJdbcDaoImpl.getLogging(2);
assertNotNull(result);
}
}

View File

@ -1,74 +0,0 @@
package com.jasamedika.medifirst2000.service.test;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.transaction.annotation.Transactional;
import com.jasamedika.medifirst2000.entities.RIS_Order;
import com.jasamedika.medifirst2000.service.impl.RIS_OrderServiceImpl;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath*:com/jasamedika/**/applicationContext.xml")
public class AgamaServiceImplTest {
@Autowired
private RIS_OrderServiceImpl agamaService;
@Test
@Transactional
public void testAdd() {
RIS_Order order = new RIS_Order();
order.setORDER_KEY(1);
order.setCREATE_DATE("");
order.setFLAG("");
order.setPATIENT_ID("");
order.setPATIENT_NAME("");
order.setPATIENT_UID("");
order.setLAST_NAME("");
order.setFIRST_NAME("");
order.setMIDDLE_NAME("");
order.setAETITLE("");
order.setSTUDY_RESERV_DATE("");
order.setORDER_MODALITY("");
order.setACCESSION_NUM("");
order.setORDER_STATUS("");
order.setORDER_CODE("");
order.setORDER_NAME("");
order.setORDER_REASON("");
order.setSTUDY_REMARK("");
order.setORDER_BODYPART("");
order.setCHARGE_DOC_ID("");
order.setCHARGE_DOC_NAME("");
order.setCONSULT_DOC_ID("");
order.setCONSULT_DOC_NAME("");
order.setORDER_DEPT("");
order.setORDER_DATE("");
order.setORDER_NO("");
order.setPATIENT_IO("");
order.setPATIENT_WARD("");
order.setIO_DATE("");
order.setPATIENT_BIRTH_DATE("");
order.setPATIENT_SEX("l");
order.setORDER_DIAG("");
order.setPATIENT_BLOOD("");
order.setORDER_CNT(0);
order.setGROUP1("");
order.setGROUP2("");
order.setGROUP3("");
order.setORDER_COMMENT("");
order.setEXTENSION1("");
order.setEXTENSION2("");
order.setEXTENSION3("");
order.setEXTENSION4("");
order.setEXTENSION5("");
order.setEXTENSION6("");
order.setEXTENSION7("");
order.setEXTENSION8("");
order.setEXTENSION9("");
order.setEXTENSION10("");
agamaService.save(order);
}
}

View File

@ -1,69 +0,0 @@
package com.jasamedika.medifirst2000.service.test;
import java.math.BigDecimal;
import java.util.List;
import com.jasamedika.medifirst2000.dto.TPatient;
import com.jasamedika.medifirst2000.service.PacsService;
import com.jasamedika.medifirst2000.service.impl.PacsServiceImpl;
public class PacsServiceImplTest {
static PacsService test = new PacsServiceImpl();
public static void main(String[]args){
insert();
}
public static void insert(){
TPatient tPatient = new TPatient();
tPatient.setFLAG("Y");
tPatient.setINSTITUTION_KEY(new BigDecimal(1));
tPatient.setLAST_STUDYDATE("211198");
tPatient.setPATIENT_AGE("020Y");
tPatient.setPATIENT_BIRTH_DATE("20-11-88");
tPatient.setPATIENT_ID("NOCM.001");
tPatient.setPATIENT_IO("I");
tPatient.setPATIENT_KEY(new BigDecimal(2));
tPatient.setPATIENT_NAME("REZA FAUZAN");
tPatient.setPATIENT_SEX("M");
test.insert(tPatient);
}
public static void update(){
TPatient tPatient = new TPatient();
tPatient.setFLAG("Y");
tPatient.setINSTITUTION_KEY(new BigDecimal(1));
tPatient.setLAST_STUDYDATE("211198");
tPatient.setPATIENT_AGE("020Y");
tPatient.setPATIENT_BIRTH_DATE("20-11-88");
tPatient.setPATIENT_ID("NOCM.001");
tPatient.setPATIENT_IO("I");
tPatient.setPATIENT_KEY(new BigDecimal(2));
tPatient.setPATIENT_NAME("ELISA");
tPatient.setPATIENT_SEX("M");
test.update(tPatient);
}
public static void delete(){
test.delete("NOCM.001");
}
public static void getOne(){
TPatient tPatient = test.getOne("NOCM.001");
System.out.println(
tPatient.getPATIENT_KEY()+"\n"+
tPatient.getPATIENT_NAME()+"\n"+
tPatient.getPATIENT_ID());
}
public static void getAll(){
List<TPatient> tPatients = test.getAll();
for(TPatient tPatient : tPatients)
System.out.println(
tPatient.getPATIENT_KEY()+"\n"+
tPatient.getPATIENT_NAME()+"\n"+
tPatient.getPATIENT_ID()+"\n");
}
}

View File

@ -1,143 +0,0 @@
package com.jasamedika.medifirst2000.service.test;
import static org.junit.Assert.*;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Map;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.transaction.annotation.Transactional;
import com.jasamedika.medifirst2000.converter.PasienConverter;
import com.jasamedika.medifirst2000.dao.PasienDao;
import com.jasamedika.medifirst2000.entities.PapAlergi;
import com.jasamedika.medifirst2000.entities.Pasien;
import com.jasamedika.medifirst2000.service.PapAlergiService;
import com.jasamedika.medifirst2000.service.PapSkriningNyeriService;
import com.jasamedika.medifirst2000.util.DateUtil;
import com.jasamedika.medifirst2000.vo.AlergiVO;
import com.jasamedika.medifirst2000.vo.PapAlergiVO;
import com.jasamedika.medifirst2000.vo.PasienVO;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath*:com/jasamedika/**/applicationContext.xml")
public class PapAlergiServiceImplTest {/*
@Autowired
private PapAlergiService papAlergiService;
@Autowired
private PasienDao pasienDao;
@Autowired
private PasienConverter pasienConverter;
@Test
@Transactional
public void testAddAlergi() {
PapAlergiVO vo = populateModel();
Map<String,Object> result = papAlergiService.addAlergi(vo);
assertNotNull(result);
PapAlergi papAlergi = (PapAlergi) result.get("papAlergi");
assertEquals("ALEGI SAMPO",papAlergi.getAlergi().getNamaAlergi());
assertEquals("Keterangan",papAlergi.getKeteranganData());
assertEquals("Reaksi",papAlergi.getReaksi());
assertEquals(generateDate(),papAlergi.getTglInput());
}
@Test
@Transactional
public void testUpdateAlergi() {
PapAlergiVO vo = populateModel();
Map<String,Object> result = papAlergiService.addAlergi(vo);
assertNotNull(result);
PapAlergiVO voUpdate = populateModel();
voUpdate.setKeteranganData("Keterangan Update");
voUpdate.setReaksi("Reaksi Update");
Map<String,Object> resultUpdate = papAlergiService.addAlergi(voUpdate);
assertNotNull(resultUpdate);
PapAlergi papAlergi = (PapAlergi) resultUpdate.get("papAlergi");
assertEquals("Keterangan Update",papAlergi.getKeteranganData());
assertEquals("Reaksi Update",papAlergi.getReaksi());
}
@Test
@Transactional
public void testFindByNoCmAndTglInput() {
Map<String,Object> result = papAlergiService.findByNoCmAndTglInput("000001", DateUtil.toDate("2013-06-07 12:10:56"));
Boolean dataFound=new Boolean((boolean) result.get("dataFound"));
assertTrue(dataFound);
}
@Test
@Transactional
public void testFindRegistrasiPelayananPasienByNoCmAndTglRegistrasi() {
Map<String,Object> result = papAlergiService.findRegistrasiPelayananPasienByNoCmAndTglRegistrasi("000001",(short) 0, DateUtil.toDate("2013-06-07 12:10:56"));
Boolean dataFound=new Boolean((boolean) result.get("dataFound"));
assertTrue(dataFound);
}
@Test
@Transactional
public void testFindPasienByNoCm() {
Map<String,Object> result = papAlergiService.findPasienByNoCm("000001");
Boolean dataFound=new Boolean((boolean) result.get("dataFound"));
assertTrue(dataFound);
}
@Test
@Transactional
public void testPopulateModel(){
Cek Pasien Dao
Pasien pasien = pasienDao.findOne(544);
assertNotNull(pasien);
assertEquals("Reynaldi Ramadhani Pratama",pasien.getNamaPasien());
Cek Pasien Converter
PasienVO pasienVO = pasienConverter.transferModelToVO(pasien,new PasienVO());
assertNotNull(pasienVO);
assertEquals("Reynaldi Ramadhani Pratama",pasienVO.getNamaPasien());
PapAlergiVO vo = populateModel();
assertEquals("ALEGI SAMPO",vo.getAlergi().getNamaAlergi());
assertEquals("Keterangan",vo.getKeteranganData());
assertEquals("Reaksi",vo.getReaksi());
}
private PapAlergiVO populateModel(){
PapAlergiVO vo = new PapAlergiVO();
Pasien pasien = pasienDao.findOne(544);
PasienVO pasienVO = pasienConverter.transferModelToVO(pasien,new PasienVO());
AlergiVO alergiVO = new AlergiVO();
alergiVO.setId(1);
alergiVO.setNamaAlergi("ALEGI SAMPO");
vo.setPasien(pasienVO);
vo.setAlergi(alergiVO);
vo.setTglInput(generateDate());
vo.setKeteranganData("Keterangan");
vo.setReaksi("Reaksi");
return vo;
}
private Date generateDate(){
SimpleDateFormat formatter = new SimpleDateFormat("EEEE, MMM dd, yyyy HH:mm:ss a");
String dateInString = "Friday, Jun 7, 2013 12:10:56 PM";
Date date = null;
try {
date = formatter.parse(dateInString);
} catch (ParseException e) {
e.printStackTrace();
}
return date;
}
*/}

View File

@ -1,144 +0,0 @@
package com.jasamedika.medifirst2000.service.test;
import static org.junit.Assert.*;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Map;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.transaction.annotation.Transactional;
import com.jasamedika.medifirst2000.converter.PasienConverter;
import com.jasamedika.medifirst2000.dao.PasienDao;
import com.jasamedika.medifirst2000.entities.PapAnamesis;
import com.jasamedika.medifirst2000.entities.Pasien;
import com.jasamedika.medifirst2000.service.PapAnamesisService;
import com.jasamedika.medifirst2000.util.DateUtil;
import com.jasamedika.medifirst2000.vo.PapAnamesisVO;
import com.jasamedika.medifirst2000.vo.PasienVO;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath*:com/jasamedika/**/applicationContext.xml")
public class PapAnamesisServiceImplTest {
@Autowired
private PapAnamesisService papAnamesisService;
@Autowired
private PasienDao pasienDao;
@Autowired
private PasienConverter pasienConverter;
@Test
@Transactional
public void testAddAnamesis() throws ParseException {
PapAnamesisVO papAnamesisVO = populateModelVO();
assertNotNull(papAnamesisVO);
Map<String,Object> result = papAnamesisService.addAnamesis(papAnamesisVO);
assertNotNull(result);
assertEquals("Setyo Wibudi",((PapAnamesis) result.get("papAnamesis")).getPasien().getNamaPasien());
}
@Test
@Transactional
public void testUpdateAnamesis() throws ParseException {
PapAnamesisVO papAnamesisVO = populateModelVO();
Map<String,Object> result = papAnamesisService.addAnamesis(papAnamesisVO);
assertNotNull(result);
PapAnamesisVO papAnamesisVOUpdate = populateModelVOUpdate();
papAnamesisVOUpdate.setNoRec(((PapAnamesis) result.get("papAnamesis")).getNoRec());
assertNotNull(papAnamesisVOUpdate);
assertEquals(papAnamesisVOUpdate.getNoRec(),((PapAnamesis) result.get("papAnamesis")).getNoRec());
Map<String,Object> resultUpdate = papAnamesisService.addAnamesis(papAnamesisVOUpdate);
assertEquals(false,((PapAnamesis) resultUpdate.get("papAnamesis")).getStatusEnabled());
}
@Test
public void testFindByNoCmAndTglInput() {
String noCm = "000001";
String tglInput = "2016-07-17 02:12:03";
Map<String,Object> result = papAnamesisService.findByNoCmAndTglInput(noCm, DateUtil.toDate(tglInput));
assertNotNull(result);
Boolean dataFound=new Boolean((boolean) result.get("dataFound"));
assertTrue(dataFound);
}
@Test
public void testFindByNoCmAndTglRegistrasi() {
String noCm = "000001";
String tglRegistrasi = "2016-07-17 02:12:03";
//Map<String,Object> result = papAnamesisService.findByNoCmAndTglInput(noCm, DateUtil.toDate(tglInput));
Map<String,Object> result = papAnamesisService.findRegistrasiPelayananPasienByNoCmAndTglRegistrasi(noCm,(short) 0, DateUtil.toDate(tglRegistrasi));
assertNotNull(result);
Boolean dataFound=new Boolean((boolean) result.get("dataFound"));
assertTrue(dataFound);
}
@Test
public void testFindPasienByNoCm() {
String noCm = "000000000000002";
Map<String,Object> result = papAnamesisService.findPasienByNoCm(noCm);
assertNotNull(result);
Boolean dataFound=new Boolean((boolean) result.get("dataFound"));
assertTrue(dataFound);
}
private PapAnamesisVO populateModelVO() throws ParseException{
PapAnamesisVO papAnamesisVO = new PapAnamesisVO();
Pasien pasien = pasienDao.findOne(547);
PasienVO pasienVO = pasienConverter.transferModelToVO(pasien,new PasienVO());
papAnamesisVO.setPasien(pasienVO);
papAnamesisVO.setTglInput(generateDate());
papAnamesisVO.setStatusEnabled(true);
return papAnamesisVO;
}
private PapAnamesisVO populateModelVOUpdate() throws ParseException{
PapAnamesisVO papAnamesisVO = new PapAnamesisVO();
Pasien pasien = pasienDao.findOne(547);
PasienVO pasienVO = pasienConverter.transferModelToVO(pasien,new PasienVO());
papAnamesisVO.setTglInput(generateDate());
papAnamesisVO.setPasien(pasienVO);
papAnamesisVO.setStatusEnabled(false);
return papAnamesisVO;
}
@Test
public void testPopulate() throws ParseException{
/*Cek Method Populate*/
PapAnamesisVO papAnamesisVO = populateModelVO();
assertNotNull(papAnamesisVO);
/*Cek Dao*/
Pasien pasien = pasienDao.findOne(544);
assertNotNull(pasien);
assertEquals("Reynaldi Ramadhani Pratama",pasien.getNamaPasien());
/*Cek Converter*/
PasienVO pasienVO = pasienConverter.transferModelToVO(pasien,new PasienVO());
assertNotNull(pasienVO);
assertEquals("Reynaldi Ramadhani Pratama",pasienVO.getNamaPasien());
}
private Date generateDate() throws ParseException{
SimpleDateFormat formatter = new SimpleDateFormat("EEEE, MMM dd, yyyy HH:mm:ss a");
String dateInString = "Friday, Jun 7, 2013 11:40:39 PM";
Date date = formatter.parse(dateInString);
return date;
}
}

View File

@ -1,181 +0,0 @@
package com.jasamedika.medifirst2000.service.test;
import static org.junit.Assert.*;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Map;
import javax.validation.constraints.AssertTrue;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.transaction.annotation.Transactional;
import com.jasamedika.medifirst2000.converter.PasienConverter;
import com.jasamedika.medifirst2000.converter.RuanganConverter;
import com.jasamedika.medifirst2000.dao.PasienDao;
import com.jasamedika.medifirst2000.dao.RuanganDao;
import com.jasamedika.medifirst2000.entities.PapBedah;
import com.jasamedika.medifirst2000.entities.Pasien;
import com.jasamedika.medifirst2000.entities.Ruangan;
import com.jasamedika.medifirst2000.service.PapBedahService;
import com.jasamedika.medifirst2000.util.DateUtil;
import com.jasamedika.medifirst2000.vo.PapBedahVO;
import com.jasamedika.medifirst2000.vo.PasienVO;
import com.jasamedika.medifirst2000.vo.RuanganVO;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath*:com/jasamedika/**/applicationContext.xml")
public class PapBedahServiceImplTest {
@Autowired
private PapBedahService papBedahService;
@Autowired
private PasienDao pasienDao;
@Autowired
private RuanganDao ruanganDao;
@Autowired
private PasienConverter pasienConverter;
@Autowired
private RuanganConverter ruanganConverter;
@Test
@Transactional
public void testAddBedah() throws ParseException {
PapBedahVO papBedahVO = populateModelVO();
assertNotNull(papBedahVO);
Map<String,Object> result = papBedahService.addBedah(papBedahVO);
//assertEquals("10",((PapBedah) result.get("papBedah")).getStrukOrder().getRuangan().getId());
assertEquals("Setyo Wibudi",((PapBedah) result.get("papBedah")).getPasien().getNamaPasien());
}
@Test
@Transactional
public void testRuangan() throws ParseException {
PapBedahVO papBedahVO = populateModelVO();
assertNotNull(papBedahVO.getRuangan());
assertEquals("10", String.valueOf(papBedahVO.getRuangan().getId()));
}
@Test
@Transactional
public void testUpdateBedah() throws ParseException {
PapBedahVO papBedahVO = populateModelVO();
Map<String,Object> result = papBedahService.addBedah(papBedahVO);
assertNotNull(result);
PapBedahVO papBedahVOUpdate = populateModelVOUpdate();
papBedahVOUpdate.setNoRec(((PapBedah) result.get("papBedah")).getNoRec());
assertNotNull(papBedahVOUpdate);
assertEquals(papBedahVOUpdate.getNoRec(),((PapBedah) result.get("papBedah")).getNoRec());
Map<String,Object> resultUpdate = papBedahService.addBedah(papBedahVO);
assertEquals(false,((PapBedah) resultUpdate.get("papBedah")).getStatusEnabled());
}
@Test
public void testFindByNoCmAndTglInput() {
String noCm = "000000000000002";
String tglInput = "2016-06-19 14:45:36";
Map<String,Object> result = papBedahService.findByNoCmAndTglInput(noCm, DateUtil.toDate(tglInput));
assertNotNull(result);
Boolean dataFound=new Boolean((boolean) result.get("dataFound"));
assertTrue(dataFound);
}
@Test
public void testFindByNoCmAndTglRegistrasi() {
String noCm = "000000000000002";
String tglRegistrasi = "2016-07-17 02:12:03";
//Map<String,Object> result = papBedahService.findByNoCmAndTglInput(noCm, DateUtil.toDate(tglInput));
Map<String,Object> result = papBedahService.findRegistrasiPelayananPasienByNoCmAndTglRegistrasi(noCm,(short) 0, DateUtil.toDate(tglRegistrasi));
assertNotNull(result);
Boolean dataFound=new Boolean((boolean) result.get("dataFound"));
assertTrue(dataFound);
}
@Test
public void testFindPasienByNoCm() {
String noCm = "000000000000002";
Map<String,Object> result = papBedahService.findPasienByNoCm(noCm);
assertNotNull(result);
Boolean dataFound=new Boolean((boolean) result.get("dataFound"));
assertTrue(dataFound);
}
private PapBedahVO populateModelVO() throws ParseException{
PapBedahVO papBedahVO = new PapBedahVO();
Pasien pasien = pasienDao.findOne(547);
PasienVO pasienVO = pasienConverter.transferModelToVO(pasien,new PasienVO());
papBedahVO.setPasien(pasienVO);
Ruangan ruangan = ruanganDao.findOne(10);
RuanganVO ruanganVO = ruanganConverter.transferModelToVO(ruangan,new RuanganVO());
papBedahVO.setRuangan(ruanganVO);
papBedahVO.setRuanganTujuan(ruanganVO);
papBedahVO.setTglInput(generateDate());
papBedahVO.setStatusEnabled(true);
return papBedahVO;
}
private PapBedahVO populateModelVOUpdate() throws ParseException{
PapBedahVO papBedahVO = new PapBedahVO();
Pasien pasien = pasienDao.findOne(547);
PasienVO pasienVO = pasienConverter.transferModelToVO(pasien,new PasienVO());
Ruangan ruangan = ruanganDao.findOne(10);
RuanganVO ruanganVO = ruanganConverter.transferModelToVO(ruangan,new RuanganVO());
papBedahVO.setRuangan(ruanganVO);
papBedahVO.setRuanganTujuan(ruanganVO);
papBedahVO.setTglInput(generateDate());
papBedahVO.setPasien(pasienVO);
papBedahVO.setStatusEnabled(false);
return papBedahVO;
}
@Test
public void testPopulate() throws ParseException{
/*Cek Method Populate*/
PapBedahVO papBedahVO = populateModelVO();
assertNotNull(papBedahVO);
/*Cek Dao*/
Pasien pasien = pasienDao.findOne(544);
assertNotNull(pasien);
assertEquals("Reynaldi Ramadhani Pratama",pasien.getNamaPasien());
Ruangan ruangan = ruanganDao.findOne(10);
assertNotNull(ruangan);
assertEquals("Klinik Psikologi",ruangan.getNamaRuangan());
/*Cek Converter*/
PasienVO pasienVO = pasienConverter.transferModelToVO(pasien,new PasienVO());
assertNotNull(pasienVO);
assertEquals("Reynaldi Ramadhani Pratama",pasienVO.getNamaPasien());
RuanganVO ruanganVO = ruanganConverter.transferModelToVO(ruangan,new RuanganVO());
assertNotNull(ruanganVO);
//assertEquals("Klinik Psikologi",pasienVO.getNamaExternal());
}
private Date generateDate() throws ParseException{
SimpleDateFormat formatter = new SimpleDateFormat("EEEE, MMM dd, yyyy HH:mm:ss a");
String dateInString = "Friday, Jun 7, 2013 11:40:39 PM";
Date date = formatter.parse(dateInString);
return date;
}
}

View File

@ -1,138 +0,0 @@
package com.jasamedika.medifirst2000.service.test;
import static org.junit.Assert.*;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Map;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.transaction.annotation.Transactional;
import com.jasamedika.medifirst2000.converter.PasienConverter;
import com.jasamedika.medifirst2000.dao.PasienDao;
import com.jasamedika.medifirst2000.entities.PapEliminasi;
import com.jasamedika.medifirst2000.entities.PapGenatalia;
import com.jasamedika.medifirst2000.entities.Pasien;
import com.jasamedika.medifirst2000.service.PapEliminasiService;
import com.jasamedika.medifirst2000.util.DateUtil;
import com.jasamedika.medifirst2000.vo.PapEliminasiVO;
import com.jasamedika.medifirst2000.vo.PasienVO;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath*:com/jasamedika/**/applicationContext.xml")
public class PapEliminasiServiceImplTest {
@Autowired
private PapEliminasiService papEliminasiService;
@Autowired
private PasienDao pasienDao;
@Autowired
private PasienConverter pasienConverter;
@Test
@Transactional
public void testAddEliminasi() {
PapEliminasiVO papEliminasiVO = populateModel();
Map<String,Object> result = papEliminasiService.addEliminasi(papEliminasiVO);
assertNotNull(result);
assertEquals("Diuresis Urin",((PapEliminasi)result.get("papEliminasi")).getDiuresisUrin());
assertEquals("Frekuensi Defraksi",((PapEliminasi)result.get("papEliminasi")).getFrekuensiDefeaksi());
assertEquals("Reynaldi Ramadhani Pratama",((PapEliminasi)result.get("papEliminasi")).getPasien().getNamaPasien());
}
@Test
@Transactional
public void testUpdateEliminasi() {
PapEliminasiVO papEliminasiVO = populateModel();
Map<String,Object> result = papEliminasiService.addEliminasi(papEliminasiVO);
assertNotNull(result);
PapEliminasiVO papEliminasiVOUpdate = populateModelUpdate();
papEliminasiVOUpdate.setNoRec(((PapEliminasi) result.get("papEliminasi")).getNoRec());
assertNotNull(papEliminasiVOUpdate);
assertEquals(papEliminasiVOUpdate.getNoRec(),((PapEliminasi) result.get("papEliminasi")).getNoRec());
Map<String,Object> resultUpdate = papEliminasiService.updateEliminasi(papEliminasiVOUpdate);
assertNotNull(resultUpdate);
assertEquals("Diuresis Urin Update",((PapEliminasi)resultUpdate.get("papEliminasi")).getDiuresisUrin());
assertEquals("Frekuensi Defraksi Update",((PapEliminasi)resultUpdate.get("papEliminasi")).getFrekuensiDefeaksi());
}
@Test
@Transactional
public void testFindByNoCmAndTglInput() {
String noCm = "000000000000005";
String tglInput = "2016-07-17 04:26:00";
Map<String,Object> result = papEliminasiService.findByNoCmAndTglInput(noCm, DateUtil.toDate(tglInput));
assertNotNull(result);
Boolean dataFound=new Boolean((boolean) result.get("dataFound"));
assertTrue(dataFound);
}
@Test
@Transactional
public void testPopulateModel(){
/*Cek Pasien Dao*/
Pasien pasien = pasienDao.findOne(544);
assertNotNull(pasien);
assertEquals("Reynaldi Ramadhani Pratama",pasien.getNamaPasien());
/*Cek Pasien Converter*/
PasienVO pasienVO = pasienConverter.transferModelToVO(pasien,new PasienVO());
assertNotNull(pasienVO);
assertEquals("Reynaldi Ramadhani Pratama",pasienVO.getNamaPasien());
/*Cek Populate*/
PapEliminasiVO papEliminasiVO = populateModel();
assertNotNull(papEliminasiVO);
assertEquals("Diuresis Urin",papEliminasiVO.getDiuresisUrin());
assertEquals("Frekuensi Defraksi",papEliminasiVO.getFrekuensiDefeaksi());
assertEquals("Reynaldi Ramadhani Pratama",papEliminasiVO.getPasien().getNamaPasien());
}
private PapEliminasiVO populateModel(){
PapEliminasiVO papEliminasiVO = new PapEliminasiVO();
Pasien pasien = pasienDao.findOne(544);
PasienVO pasienVO = pasienConverter.transferModelToVO(pasien,new PasienVO());
papEliminasiVO.setDiuresisUrin("Diuresis Urin");
papEliminasiVO.setFrekuensiDefeaksi("Frekuensi Defraksi");
papEliminasiVO.setTglInput(generateDate());
papEliminasiVO.setPasien(pasienVO);
return papEliminasiVO;
}
private PapEliminasiVO populateModelUpdate(){
PapEliminasiVO papEliminasiVO = new PapEliminasiVO();
Pasien pasien = pasienDao.findOne(544);
PasienVO pasienVO = pasienConverter.transferModelToVO(pasien,new PasienVO());
papEliminasiVO.setDiuresisUrin("Diuresis Urin Update");
papEliminasiVO.setFrekuensiDefeaksi("Frekuensi Defraksi Update");
papEliminasiVO.setTglInput(new Date());
papEliminasiVO.setPasien(pasienVO);
return papEliminasiVO;
}
private Date generateDate(){
SimpleDateFormat formatter = new SimpleDateFormat("EEEE, MMM dd, yyyy HH:mm:ss a");
String dateInString = "Friday, Jun 7, 2013 12:10:56 PM";
Date date = null;
try {
date = formatter.parse(dateInString);
} catch (ParseException e) {
e.printStackTrace();
}
return date;
}
}

View File

@ -1,132 +0,0 @@
package com.jasamedika.medifirst2000.service.test;
import static org.junit.Assert.*;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Map;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.transaction.annotation.Transactional;
import com.jasamedika.medifirst2000.converter.PasienConverter;
import com.jasamedika.medifirst2000.dao.PasienDao;
import com.jasamedika.medifirst2000.entities.PapGastrointestinal;
import com.jasamedika.medifirst2000.entities.Pasien;
import com.jasamedika.medifirst2000.service.PapGastrointestinalService;
import com.jasamedika.medifirst2000.util.DateUtil;
import com.jasamedika.medifirst2000.vo.PapGastrointestinalVO;
import com.jasamedika.medifirst2000.vo.PasienVO;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath*:com/jasamedika/**/applicationContext.xml")
public class PapGastrointestinalServiceImplTest {
@Autowired
private PapGastrointestinalService papGastrointestinalService;
@Autowired
private PasienDao pasienDao;
@Autowired
private PasienConverter pasienConverter;
@Autowired
private PasienConverter papGastrintestinal;
@Test
@Transactional
public void testAddGastrointestinal() throws ParseException {
PapGastrointestinalVO papGastrointestinalVO = populateModelVO();
assertNotNull(papGastrointestinalVO);
Map<String,Object> result = papGastrointestinalService.addGastrointestinal(papGastrointestinalVO);
assertEquals("15",((PapGastrointestinal) result.get("papGastrointestinal")).getLingkarPerut());
assertEquals(true,((PapGastrointestinal) result.get("papGastrointestinal")).getIsNormal());
assertNotNull(result);
}
@Test
@Transactional
public void testUpdateGastrointestinal() throws ParseException {
PapGastrointestinalVO papGastrointestinalVO = populateModelVO();
Map<String,Object> result = papGastrointestinalService.addGastrointestinal(papGastrointestinalVO);
assertNotNull(result);
PapGastrointestinalVO papGastrointestinalVOUpdate = populateModelVOUpdate();
papGastrointestinalVOUpdate.setNoRec(((PapGastrointestinal) result.get("papGastrointestinal")).getNoRec());
assertNotNull(papGastrointestinalVOUpdate);
assertEquals(papGastrointestinalVOUpdate.getNoRec(),((PapGastrointestinal) result.get("papGastrointestinal")).getNoRec());
Map<String,Object> resultUpdate = papGastrointestinalService.addGastrointestinal(papGastrointestinalVOUpdate);
assertEquals("15 update",((PapGastrointestinal) resultUpdate.get("papGastrointestinal")).getLingkarPerut());
assertEquals(false,((PapGastrointestinal) resultUpdate.get("papGastrointestinal")).getIsNormal());
}
@Test
public void testFindByNoCmAndTglInput() {
String noCm = "000003";
String tglInput = "2013-06-07 11:40:39";
Map<String,Object> result = papGastrointestinalService.findByNoCmAndTglInput(noCm, DateUtil.toDate(tglInput));
assertNotNull(result);
Boolean dataFound=new Boolean((boolean) result.get("dataFound"));
assertTrue(dataFound);
//assertEquals(59,((PapGastrointestinal) result.get("papGastrointestinal")).getTglInput().getMinutes());
assertEquals("15 update",((PapGastrointestinal) result.get("papGastrointestinal")).getLingkarPerut());
}
private PapGastrointestinalVO populateModelVO() throws ParseException{
PapGastrointestinalVO papGastrointestinalVO = new PapGastrointestinalVO();
Pasien pasien = pasienDao.findOne(547);
PasienVO pasienVO = pasienConverter.transferModelToVO(pasien,new PasienVO());
papGastrointestinalVO.setTglInput(generateDate());
papGastrointestinalVO.setPasien(pasienVO);
papGastrointestinalVO.setIsNormal(true);
papGastrointestinalVO.setLingkarPerut("15");
return papGastrointestinalVO;
}
private PapGastrointestinalVO populateModelVOUpdate() throws ParseException{
PapGastrointestinalVO papGastrointestinalVO = new PapGastrointestinalVO();
Pasien pasien = pasienDao.findOne(547);
PasienVO pasienVO = pasienConverter.transferModelToVO(pasien,new PasienVO());
papGastrointestinalVO.setTglInput(generateDate());
papGastrointestinalVO.setPasien(pasienVO);
papGastrointestinalVO.setLingkarPerut("15 update");
papGastrointestinalVO.setIsNormal(false);
return papGastrointestinalVO;
}
@Test
public void testPopulate() throws ParseException{
/*Cek Method Populate*/
PapGastrointestinalVO papGastrointestinalVO = populateModelVO();
assertNotNull(papGastrointestinalVO);
/*Cek Dao*/
Pasien pasien = pasienDao.findOne(544);
assertNotNull(pasien);
assertEquals("Reynaldi Ramadhani Pratama",pasien.getNamaPasien());
/*Cek Converter*/
PasienVO pasienVO = pasienConverter.transferModelToVO(pasien,new PasienVO());
assertNotNull(pasienVO);
assertEquals("Reynaldi Ramadhani Pratama",pasienVO.getNamaPasien());
}
private Date generateDate() throws ParseException{
SimpleDateFormat formatter = new SimpleDateFormat("EEEE, MMM dd, yyyy HH:mm:ss a");
String dateInString = "Friday, Jun 7, 2013 11:40:39 PM";
Date date = formatter.parse(dateInString);
return date;
}
}

View File

@ -1,143 +0,0 @@
package com.jasamedika.medifirst2000.service.test;
import static org.junit.Assert.*;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.transaction.annotation.Transactional;
import com.jasamedika.medifirst2000.converter.PasienConverter;
import com.jasamedika.medifirst2000.converter.RegistrasiPelayananPasienConverter;
import com.jasamedika.medifirst2000.dao.PasienDao;
import com.jasamedika.medifirst2000.dao.RegistrasiPelayananPasienDao;
import com.jasamedika.medifirst2000.entities.PapGenatalia;
import com.jasamedika.medifirst2000.entities.Pasien;
import com.jasamedika.medifirst2000.entities.RegistrasiPelayananPasien;
import com.jasamedika.medifirst2000.service.PapGenataliaService;
import com.jasamedika.medifirst2000.util.DateUtil;
import com.jasamedika.medifirst2000.vo.PapGenataliaVO;
import com.jasamedika.medifirst2000.vo.PasienVO;
import com.jasamedika.medifirst2000.vo.RegistrasiPelayananPasienVO;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath*:com/jasamedika/**/applicationContext.xml")
public class PapGenataliaServiceImplTest {
@Autowired
private PapGenataliaService papGenataliaService;
@Autowired
private PasienDao pasienDao;
@Autowired
private PasienConverter pasienConverter;
// @Autowired
// private RegistrasiPelayananPasienDao registrasiPelayananPasienDao;
// @Autowired RegistrasiPelayananPasienConverter registrasiPelayananPasienConverter;
@Test
@Transactional
public void testAddGenatalia() throws ParseException {
PapGenataliaVO papGenataliaVO = populateModelVO();
Map<String,Object> result = papGenataliaService.addGenatalia(papGenataliaVO);
assertNotNull(result);
assertEquals("Test Status Genatalia",((PapGenatalia) result.get("papGenatalia")).getStatus());
assertNotEquals("Test Status Genatalia Error",((PapGenatalia) result.get("papGenatalia")).getStatus());
assertEquals("Test Keterangan Genatalia",((PapGenatalia) result.get("papGenatalia")).getKeterangan());
}
@Test
@Transactional
public void testUpdateGenatalia() throws ParseException {
PapGenataliaVO papGenataliaVO = populateModelVO();
Map<String,Object> result = papGenataliaService.addGenatalia(papGenataliaVO);
assertNotNull(result);
PapGenataliaVO papGenataliaVOUpdate = populateModelVOUpdate();
papGenataliaVOUpdate.setNoRec(((PapGenatalia) result.get("papGenatalia")).getNoRec());
assertNotNull(papGenataliaVOUpdate);
assertEquals(papGenataliaVOUpdate.getNoRec(),((PapGenatalia) result.get("papGenatalia")).getNoRec());
Map<String,Object> resultUpdate = papGenataliaService.addGenatalia(papGenataliaVOUpdate);
assertEquals("Test Status Genatalia Update",((PapGenatalia) resultUpdate.get("papGenatalia")).getStatus());
assertNotEquals("Test Status Genatalia Error",((PapGenatalia) resultUpdate.get("papGenatalia")).getStatus());
assertEquals("Test Keterangan Genatalia Update",((PapGenatalia) resultUpdate.get("papGenatalia")).getKeterangan());
}
@Test
@Transactional
public void testPopulate() throws ParseException{
/*Cek Method Populate*/
PapGenataliaVO papGenataliaVO = populateModelVO();
assertNotNull(papGenataliaVO);
/*Cek Dao*/
Pasien pasien = pasienDao.findOne(544);
assertNotNull(pasien);
assertEquals("Reynaldi Ramadhani Pratama",pasien.getNamaPasien());
/*Cek Converter*/
PasienVO pasienVO = pasienConverter.transferModelToVO(pasien,new PasienVO());
assertNotNull(pasienVO);
assertEquals("Reynaldi Ramadhani Pratama",pasienVO.getNamaPasien());
}
@Test
@Transactional
public void testFindByNoCmAndTglInput() {
String noCm = "000001";
String tglInput = "2016-07-17 02:12:03";
Map<String,Object> result = papGenataliaService.findByNoCmAndTglInput(noCm, DateUtil.toDate(tglInput));
assertNotNull(result);
Boolean dataFound=new Boolean((boolean) result.get("dataFound"));
assertTrue(dataFound);
}
private PapGenataliaVO populateModelVO() throws ParseException{
PapGenataliaVO papGenataliaVO = new PapGenataliaVO();
//RegistrasiPelayananPasien registrasiPelayananPasien = registrasiPelayananPasienDao.findOne("2c9090ad56014d2c0156014f2f020003");
//RegistrasiPelayananPasienVO registrasiPelayananPasienVO = registrasiPelayananPasienConverter.transferModelToVO(registrasiPelayananPasien, new RegistrasiPelayananPasienVO());
Pasien pasien = pasienDao.findOne(544);
PasienVO pasienVO = pasienConverter.transferModelToVO(pasien,new PasienVO());
papGenataliaVO.setStatus("Test Status Genatalia");
papGenataliaVO.setKeterangan("Test Keterangan Genatalia");
papGenataliaVO.setTglInput(generateDate());
// papGenataliaVO.setRegistrasiPelayananPasien(registrasiPelayananPasienVO);
papGenataliaVO.setPasien(pasienVO);
return papGenataliaVO;
}
private PapGenataliaVO populateModelVOUpdate() throws ParseException{
PapGenataliaVO papGenataliaVO = new PapGenataliaVO();
Pasien pasien = pasienDao.findOne(544);
PasienVO pasienVO = pasienConverter.transferModelToVO(pasien,new PasienVO());
papGenataliaVO.setStatus("Test Status Genatalia Update");
papGenataliaVO.setKeterangan("Test Keterangan Genatalia Update");
papGenataliaVO.setTglInput(generateDate());
papGenataliaVO.setPasien(pasienVO);
return papGenataliaVO;
}
private Date generateDate() throws ParseException{
SimpleDateFormat formatter = new SimpleDateFormat("EEEE, MMM dd, yyyy HH:mm:ss a");
String dateInString = "Friday, Jun 7, 2013 12:10:56 PM";
Date date = formatter.parse(dateInString);
return date;
}
}

View File

@ -1,270 +0,0 @@
package com.jasamedika.medifirst2000.service.test;
import static org.junit.Assert.*;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Map;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.transaction.annotation.Transactional;
import com.jasamedika.medifirst2000.converter.PasienConverter;
import com.jasamedika.medifirst2000.converter.RuanganConverter;
import com.jasamedika.medifirst2000.dao.PasienDao;
import com.jasamedika.medifirst2000.dao.RuanganDao;
import com.jasamedika.medifirst2000.entities.PapGigiMulut;
import com.jasamedika.medifirst2000.entities.Pasien;
import com.jasamedika.medifirst2000.entities.Ruangan;
import com.jasamedika.medifirst2000.service.PapGigiMulutService;
import com.jasamedika.medifirst2000.util.DateUtil;
import com.jasamedika.medifirst2000.vo.PapBahanRestorasiVO;
import com.jasamedika.medifirst2000.vo.PapGigiKananDuaVO;
import com.jasamedika.medifirst2000.vo.PapGigiKananEmpatVO;
import com.jasamedika.medifirst2000.vo.PapGigiKananSatuVO;
import com.jasamedika.medifirst2000.vo.PapGigiKananTigaVO;
import com.jasamedika.medifirst2000.vo.PapGigiKiriDuaVO;
import com.jasamedika.medifirst2000.vo.PapGigiKiriEmpatVO;
import com.jasamedika.medifirst2000.vo.PapGigiKiriSatuVO;
import com.jasamedika.medifirst2000.vo.PapGigiKiriTigaVO;
import com.jasamedika.medifirst2000.vo.PapGigiMulutVO;
import com.jasamedika.medifirst2000.vo.PapKeadaanGigiVO;
import com.jasamedika.medifirst2000.vo.PapProtesaVO;
import com.jasamedika.medifirst2000.vo.PapRestorasiVO;
import com.jasamedika.medifirst2000.vo.PasienVO;
import com.jasamedika.medifirst2000.vo.RuanganVO;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath*:com/jasamedika/**/applicationContext.xml")
public class PapGigiMulutServiceImplTest {
@Autowired
private PapGigiMulutService papGigiMulutService;
@Autowired
private PasienDao pasienDao;
@Autowired
private RuanganDao ruanganDao;
@Autowired
private PasienConverter pasienConverter;
@Autowired
private RuanganConverter ruanganConverter;
@Test
@Transactional
public void testAddGigiMulut() throws ParseException {
PapGigiMulutVO papGigiMulutVO = populateModelVO();
assertNotNull(papGigiMulutVO);
Map<String,Object> result = papGigiMulutService.addGigiMulut(papGigiMulutVO);
assertNotNull(result);
assertEquals("Setyo Wibudi",((PapGigiMulut) result.get("papGigiMulut")).getPasien().getNamaPasien());
}
@Test
@Transactional
public void testUpdateGigiMulut() throws ParseException {
PapGigiMulutVO papGigiMulutVO = populateModelVO();
Map<String,Object> result = papGigiMulutService.addGigiMulut(papGigiMulutVO);
assertNotNull(result);
PapGigiMulutVO papGigiMulutVOUpdate = populateModelVOUpdate();
papGigiMulutVOUpdate.setNoRec(((PapGigiMulut) result.get("papGigiMulut")).getNoRec());
assertNotNull(papGigiMulutVOUpdate);
assertEquals(papGigiMulutVOUpdate.getNoRec(),((PapGigiMulut) result.get("papGigiMulut")).getNoRec());
Map<String,Object> resultUpdate = papGigiMulutService.addGigiMulut(papGigiMulutVOUpdate);
assertEquals(false,((PapGigiMulut) resultUpdate.get("papGigiMulut")).getStatusEnabled());
}
@Test
public void testFindByNoCmAndTglInput() {
String noCm = "000003";
String tglInput = "2013-06-07 11:40:39";
Map<String,Object> result = papGigiMulutService.findByNoCmAndTglInput(noCm, DateUtil.toDate(tglInput));
assertNotNull(result);
Boolean dataFound=new Boolean((boolean) result.get("dataFound"));
assertTrue(dataFound);
}
@Test
public void testFindByNoCmAndTglRegistrasi() {
String noCm = "000003";
String tglRegistrasi = "2013-06-07 11:40:39";
//Map<String,Object> result = papGigiMulutService.findByNoCmAndTglInput(noCm, DateUtil.toDate(tglInput));
Map<String,Object> result = papGigiMulutService.findRegistrasiPelayananPasienByNoCmAndTglRegistrasi(noCm,(short) 0, DateUtil.toDate(tglRegistrasi));
assertNotNull(result);
Boolean dataFound=new Boolean((boolean) result.get("dataFound"));
assertTrue(dataFound);
}
@Test
public void testFindPasienByNoCm() {
String noCm = "000003";
Map<String,Object> result = papGigiMulutService.findPasienByNoCm(noCm);
assertNotNull(result);
Boolean dataFound=new Boolean((boolean) result.get("dataFound"));
assertTrue(dataFound);
}
private PapGigiMulutVO populateModelVO() throws ParseException{
PapGigiMulutVO papGigiMulutVO = new PapGigiMulutVO();
Pasien pasien = pasienDao.findOne(547);
PasienVO pasienVO = pasienConverter.transferModelToVO(pasien,new PasienVO());
papGigiMulutVO.setPasien(pasienVO);
PapKeadaanGigiVO papKeadaanGigiVO= new PapKeadaanGigiVO();
papKeadaanGigiVO.setId(1);
papGigiMulutVO.setPapKeadaanGigi(papKeadaanGigiVO);
PapGigiKiriSatuVO papGigiKiriSatuVO= new PapGigiKiriSatuVO();
papGigiKiriSatuVO.setTujuhbelas("tujuhbelas");
papGigiMulutVO.setPapGigiKiriSatu(papGigiKiriSatuVO);
PapGigiKiriDuaVO papGigiKiriDuaVO= new PapGigiKiriDuaVO();
papGigiKiriDuaVO.setLimalima("limalima");
papGigiMulutVO.setPapGigiKiriDua(papGigiKiriDuaVO);
PapGigiKiriTigaVO papGigiKiriTigaVO= new PapGigiKiriTigaVO();
papGigiKiriTigaVO.setDelapandua("delapandua");
papGigiMulutVO.setPapGigiKiriTiga(papGigiKiriTigaVO);
PapGigiKiriEmpatVO papGigiKiriEmpatVO= new PapGigiKiriEmpatVO();
papGigiKiriEmpatVO.setEmpatdua("empatdua");
papGigiMulutVO.setPapGigiKiriEmpat(papGigiKiriEmpatVO);
PapGigiKananSatuVO papGigiKananSatuVO= new PapGigiKananSatuVO();
papGigiKananSatuVO.setDuadua("duadua");
papGigiMulutVO.setPapGigiKananSatu(papGigiKananSatuVO);
PapGigiKananDuaVO papGigiKananDuaVO= new PapGigiKananDuaVO();
papGigiKananDuaVO.setEnamlima("enamlima");
papGigiMulutVO.setPapGigiKananDua(papGigiKananDuaVO);
PapGigiKananTigaVO papGigiKananTigaVO= new PapGigiKananTigaVO();
papGigiKananTigaVO.setTujuhempat("tujuhempat");
papGigiMulutVO.setPapGigiKananTiga(papGigiKananTigaVO);
PapGigiKananEmpatVO papGigiKananEmpatVO= new PapGigiKananEmpatVO();
papGigiKananEmpatVO.setTigadua("tigadua");
papGigiMulutVO.setPapGigiKananEmpat(papGigiKananEmpatVO);
PapRestorasiVO papRestorasiVO= new PapRestorasiVO();
papRestorasiVO.setId(1);
papGigiMulutVO.setPapRestorasi(papRestorasiVO);
PapBahanRestorasiVO papBahanRestorasiVO= new PapBahanRestorasiVO();
papBahanRestorasiVO.setId(1);
papGigiMulutVO.setPapBahanRestorasi(papBahanRestorasiVO);
PapProtesaVO papProtesaVO= new PapProtesaVO();
papProtesaVO.setId(1);
papGigiMulutVO.setPapProtesa(papProtesaVO);
papGigiMulutVO.setTglInput(generateDate());
papGigiMulutVO.setStatusEnabled(true);
return papGigiMulutVO;
}
private PapGigiMulutVO populateModelVOUpdate() throws ParseException{
PapGigiMulutVO papGigiMulutVO = new PapGigiMulutVO();
Pasien pasien = pasienDao.findOne(547);
PasienVO pasienVO = pasienConverter.transferModelToVO(pasien,new PasienVO());
papGigiMulutVO.setPasien(pasienVO);
PapKeadaanGigiVO papKeadaanGigiVO= new PapKeadaanGigiVO();
papKeadaanGigiVO.setId(1);
papGigiMulutVO.setPapKeadaanGigi(papKeadaanGigiVO);
PapGigiKiriSatuVO papGigiKiriSatuVO= new PapGigiKiriSatuVO();
papGigiKiriSatuVO.setTujuhbelas("tujuhbelas");
papGigiMulutVO.setPapGigiKiriSatu(papGigiKiriSatuVO);
PapGigiKiriDuaVO papGigiKiriDuaVO= new PapGigiKiriDuaVO();
papGigiKiriDuaVO.setLimalima("limalima");
papGigiMulutVO.setPapGigiKiriDua(papGigiKiriDuaVO);
PapGigiKiriTigaVO papGigiKiriTigaVO= new PapGigiKiriTigaVO();
papGigiKiriTigaVO.setDelapandua("delapandua");
papGigiMulutVO.setPapGigiKiriTiga(papGigiKiriTigaVO);
PapGigiKiriEmpatVO papGigiKiriEmpatVO= new PapGigiKiriEmpatVO();
papGigiKiriEmpatVO.setEmpatdua("empatdua");
papGigiMulutVO.setPapGigiKiriEmpat(papGigiKiriEmpatVO);
PapGigiKananSatuVO papGigiKananSatuVO= new PapGigiKananSatuVO();
papGigiKananSatuVO.setDuadua("duadua");
papGigiMulutVO.setPapGigiKananSatu(papGigiKananSatuVO);
PapGigiKananDuaVO papGigiKananDuaVO= new PapGigiKananDuaVO();
papGigiKananDuaVO.setEnamlima("enamlima");
papGigiMulutVO.setPapGigiKananDua(papGigiKananDuaVO);
PapGigiKananTigaVO papGigiKananTigaVO= new PapGigiKananTigaVO();
papGigiKananTigaVO.setTujuhempat("tujuhempat");
papGigiMulutVO.setPapGigiKananTiga(papGigiKananTigaVO);
PapGigiKananEmpatVO papGigiKananEmpatVO= new PapGigiKananEmpatVO();
papGigiKananEmpatVO.setTigadua("tigadua");
papGigiMulutVO.setPapGigiKananEmpat(papGigiKananEmpatVO);
PapRestorasiVO papRestorasiVO= new PapRestorasiVO();
papRestorasiVO.setId(1);
papGigiMulutVO.setPapRestorasi(papRestorasiVO);
PapBahanRestorasiVO papBahanRestorasiVO= new PapBahanRestorasiVO();
papBahanRestorasiVO.setId(1);
papGigiMulutVO.setPapBahanRestorasi(papBahanRestorasiVO);
PapProtesaVO papProtesaVO= new PapProtesaVO();
papProtesaVO.setId(1);
papGigiMulutVO.setPapProtesa(papProtesaVO);
papGigiMulutVO.setTglInput(generateDate());
papGigiMulutVO.setStatusEnabled(false);
return papGigiMulutVO;
}
@Test
public void testPopulate() throws ParseException{
/*Cek Method Populate*/
PapGigiMulutVO papGigiMulutVO = populateModelVO();
assertNotNull(papGigiMulutVO);
/*Cek Dao*/
Pasien pasien = pasienDao.findOne(544);
assertNotNull(pasien);
assertEquals("Reynaldi Ramadhani Pratama",pasien.getNamaPasien());
Ruangan ruangan = ruanganDao.findOne(10);
assertNotNull(ruangan);
assertEquals("Klinik Psikologi",ruangan.getNamaRuangan());
/*Cek Converter*/
PasienVO pasienVO = pasienConverter.transferModelToVO(pasien,new PasienVO());
assertNotNull(pasienVO);
assertEquals("Reynaldi Ramadhani Pratama",pasienVO.getNamaPasien());
RuanganVO ruanganVO = ruanganConverter.transferModelToVO(ruangan,new RuanganVO());
assertNotNull(ruanganVO);
//assertEquals("Klinik Psikologi",pasienVO.getNamaExternal());
}
private Date generateDate() throws ParseException{
SimpleDateFormat formatter = new SimpleDateFormat("EEEE, MMM dd, yyyy HH:mm:ss a");
String dateInString = "Friday, Jun 7, 2013 11:40:39 PM";
Date date = formatter.parse(dateInString);
return date;
}
}

View File

@ -1,159 +0,0 @@
package com.jasamedika.medifirst2000.service.test;
import static org.junit.Assert.*;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Map;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.transaction.annotation.Transactional;
import com.jasamedika.medifirst2000.converter.PasienConverter;
import com.jasamedika.medifirst2000.dao.PasienDao;
import com.jasamedika.medifirst2000.entities.PapIntegumen;
import com.jasamedika.medifirst2000.entities.Pasien;
import com.jasamedika.medifirst2000.service.PapIntegumenService;
import com.jasamedika.medifirst2000.util.DateUtil;
import com.jasamedika.medifirst2000.vo.PapIntegumenVO;
import com.jasamedika.medifirst2000.vo.PasienVO;
import com.jasamedika.medifirst2000.vo.StatusAdaTidakAdaVO;
import com.jasamedika.medifirst2000.vo.WarnaKulitVO;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath*:com/jasamedika/**/applicationContext.xml")
public class PapIntegumenServiceImplTest {
@Autowired
private PapIntegumenService papIntegumenService;
@Autowired
private PasienDao pasienDao;
@Autowired
private PasienConverter pasienConverter;
@Test
@Transactional
public void testAddIntegumen() {
PapIntegumenVO papIntegumenVO = populateModel();
Map<String,Object> result = papIntegumenService.addIntegumen(papIntegumenVO);
assertNotNull(result);
assertEquals("Normal",((PapIntegumen) result.get("papIntegumen")).getWarnaKulit().getName());
assertEquals("Tidak ada",((PapIntegumen) result.get("papIntegumen")).getKelainan().getName());
assertEquals("Tidak ada",((PapIntegumen) result.get("papIntegumen")).getResikoDekubitos().getName());
assertEquals("Tidak ada",((PapIntegumen) result.get("papIntegumen")).getLuka().getName());
assertEquals("Reynaldi Ramadhani Pratama",((PapIntegumen) result.get("papIntegumen")).getPasien().getNamaPasien());
assertTrue(((PapIntegumen) result.get("papIntegumen")).getIsNormal());
}
@Test
@Transactional
public void testUpdateIntegumen() {
PapIntegumenVO papIntegumenVO = populateModel();
Map<String,Object> result = papIntegumenService.addIntegumen(papIntegumenVO);
assertNotNull(result);
PapIntegumenVO papIntegumenVOUpdate = populateModelUpdate();
Map<String,Object> resultUpdate = papIntegumenService.addIntegumen(papIntegumenVOUpdate);
assertNotNull(resultUpdate);
assertEquals("Pucat",((PapIntegumen) resultUpdate.get("papIntegumen")).getWarnaKulit().getName());
assertEquals("Ada",((PapIntegumen) resultUpdate.get("papIntegumen")).getKelainan().getName());
assertEquals("Ada",((PapIntegumen) resultUpdate.get("papIntegumen")).getResikoDekubitos().getName());
assertEquals("Ada",((PapIntegumen) resultUpdate.get("papIntegumen")).getLuka().getName());
assertEquals("Reynaldi Ramadhani Pratama",((PapIntegumen) resultUpdate.get("papIntegumen")).getPasien().getNamaPasien());
assertFalse(((PapIntegumen) resultUpdate.get("papIntegumen")).getIsNormal());
}
@Test
@Transactional
public void testFindByNoCmAndTglInput() {
String noCm = "000000000000005";
String tglInput = "2016-07-17 04:26:00";
Map<String,Object> result = papIntegumenService.findByNoCmAndTglInput(noCm, DateUtil.toDate(tglInput));
assertNotNull(result);
Boolean dataFound=new Boolean((boolean) result.get("dataFound"));
assertTrue(dataFound);
}
@Test
@Transactional
public void populateModelTest(){
/*Cek Pasien Dao*/
Pasien pasien = pasienDao.findOne(544);
assertNotNull(pasien);
assertEquals("Reynaldi Ramadhani Pratama",pasien.getNamaPasien());
/*Cek Pasien Converter*/
PasienVO pasienVO = pasienConverter.transferModelToVO(pasien,new PasienVO());
assertNotNull(pasienVO);
assertEquals("Reynaldi Ramadhani Pratama",pasienVO.getNamaPasien());
/*Cek Populate*/
PapIntegumenVO papIntegumenVO = populateModel();
assertEquals("Normal",papIntegumenVO.getWarnaKulit().getName());
assertEquals("Tidak ada",papIntegumenVO.getKelainan().getName());
assertEquals("Tidak ada",papIntegumenVO.getResikoDekubitos().getName());
assertEquals("Tidak ada",papIntegumenVO.getLuka().getName());
}
private PapIntegumenVO populateModel(){
PapIntegumenVO papIntegumenVO = new PapIntegumenVO();
Pasien pasien = pasienDao.findOne(544);
PasienVO pasienVO = pasienConverter.transferModelToVO(pasien,new PasienVO());
WarnaKulitVO warnaKulitVO = new WarnaKulitVO();
warnaKulitVO.setId(1);
warnaKulitVO.setName("Normal");
StatusAdaTidakAdaVO statusAdaTidakAdaVO = new StatusAdaTidakAdaVO();
statusAdaTidakAdaVO.setId(1);
statusAdaTidakAdaVO.setName("Tidak ada");
papIntegumenVO.setTglInput(generateDate());
papIntegumenVO.setPasien(pasienVO);
papIntegumenVO.setWarnaKulit(warnaKulitVO);
papIntegumenVO.setKelainan(statusAdaTidakAdaVO);
papIntegumenVO.setResikoDekubitos(statusAdaTidakAdaVO);
papIntegumenVO.setLuka(statusAdaTidakAdaVO);
papIntegumenVO.setIsNormal(true);
return papIntegumenVO;
}
private PapIntegumenVO populateModelUpdate(){
PapIntegumenVO papIntegumenVO = new PapIntegumenVO();
Pasien pasien = pasienDao.findOne(544);
PasienVO pasienVO = pasienConverter.transferModelToVO(pasien,new PasienVO());
WarnaKulitVO warnaKulitVO = new WarnaKulitVO();
warnaKulitVO.setId(2);
warnaKulitVO.setName("Pucat");
StatusAdaTidakAdaVO statusAdaTidakAdaVO = new StatusAdaTidakAdaVO();
statusAdaTidakAdaVO.setId(2);
statusAdaTidakAdaVO.setName("Ada");
papIntegumenVO.setIsNormal(false);
papIntegumenVO.setTglInput(generateDate());
papIntegumenVO.setPasien(pasienVO);
papIntegumenVO.setWarnaKulit(warnaKulitVO);
papIntegumenVO.setKelainan(statusAdaTidakAdaVO);
papIntegumenVO.setResikoDekubitos(statusAdaTidakAdaVO);
papIntegumenVO.setLuka(statusAdaTidakAdaVO);
return papIntegumenVO;
}
private Date generateDate(){
SimpleDateFormat formatter = new SimpleDateFormat("EEEE, MMM dd, yyyy HH:mm:ss a");
String dateInString = "Friday, Jun 7, 2013 12:10:56 PM";
Date date = null;
try {
date = formatter.parse(dateInString);
} catch (ParseException e) {
e.printStackTrace();
}
return date;
}
}

View File

@ -1,160 +0,0 @@
package com.jasamedika.medifirst2000.service.test;
import static org.junit.Assert.*;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Map;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.transaction.annotation.Transactional;
import com.jasamedika.medifirst2000.converter.PasienConverter;
import com.jasamedika.medifirst2000.converter.RegistrasiPelayananPasienConverter;
import com.jasamedika.medifirst2000.dao.PasienDao;
import com.jasamedika.medifirst2000.dao.RegistrasiPelayananPasienDao;
import com.jasamedika.medifirst2000.entities.PapKeluhanTambahan;
import com.jasamedika.medifirst2000.entities.Pasien;
import com.jasamedika.medifirst2000.entities.RegistrasiPelayananPasien;
import com.jasamedika.medifirst2000.service.PapKeluhanTambahanService;
import com.jasamedika.medifirst2000.util.DateUtil;
import com.jasamedika.medifirst2000.vo.PapKeluhanTambahanVO;
import com.jasamedika.medifirst2000.vo.PasienVO;
import com.jasamedika.medifirst2000.vo.RegistrasiPelayananPasienVO;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath*:com/jasamedika/**/applicationContext.xml")
public class PapKeluhanTambahanServiceImplTest {
@Autowired
private PapKeluhanTambahanService papKeluhanTambahanService;
@Autowired
private PasienDao pasienDao;
@Autowired
private RegistrasiPelayananPasienDao registrasiPelayananpasienDao;
@Autowired
private PasienConverter pasienConverter;
@Autowired
private RegistrasiPelayananPasienConverter registrasiPelayananPasienConverter;
@Test
@Transactional
public void testAddKeluhanTambahan() throws ParseException {
PapKeluhanTambahanVO papKeluhanTambahanVO = populateModelVO();
assertNotNull(papKeluhanTambahanVO);
Map<String,Object> result = papKeluhanTambahanService.addKeluhanTambahan(papKeluhanTambahanVO);
assertNotNull(result);
assertEquals("Keluhan tambahan",((PapKeluhanTambahan) result.get("papKeluhanTambahan")).getKeluhanTambahan());
//assertEquals("Setyo Wibudi",((PapKeluhanTambahan) result.get("papKeluhanTambahan")).getPasien().getNamaPasien());
}
@Test
@Transactional
public void testUpdateKeluhanTambahan() throws ParseException {
PapKeluhanTambahanVO papKeluhanTambahanVO = populateModelVO();
Map<String,Object> result = papKeluhanTambahanService.addKeluhanTambahan(papKeluhanTambahanVO);
assertNotNull(result);
PapKeluhanTambahanVO papKeluhanTambahanVOUpdate = populateModelVOUpdate();
papKeluhanTambahanVOUpdate.setNoRec(((PapKeluhanTambahan) result.get("papKeluhanTambahan")).getNoRec());
assertNotNull(papKeluhanTambahanVOUpdate);
assertEquals(papKeluhanTambahanVOUpdate.getNoRec(),((PapKeluhanTambahan) result.get("papKeluhanTambahan")).getNoRec());
Map<String,Object> resultUpdate = papKeluhanTambahanService.addKeluhanTambahan(papKeluhanTambahanVOUpdate);
assertEquals(false,((PapKeluhanTambahan) resultUpdate.get("papKeluhanTambahan")).getStatusEnabled());
assertEquals("Keluhan tambahan update",((PapKeluhanTambahan) resultUpdate.get("papKeluhanTambahan")).getKeluhanTambahan());
}
@Test
public void testFindByNoCmAndTglInput() {
String noCm = "000000000000005";
String tglInput = "2016-07-21 00:24:30";
Map<String,Object> result = papKeluhanTambahanService.findByNoCmAndTglInput(noCm, DateUtil.toDate(tglInput));
assertNotNull(result);
Boolean dataFound=new Boolean((boolean) result.get("dataFound"));
assertTrue(dataFound);
assertEquals("keluhan Pertama",((PapKeluhanTambahan) result.get("papKeluhanTambahan")).getKeluhanTambahan());
}
@Test
public void testFindPasienByNoCmAndTglKeluhan() {
String noCm = "000000000000005";
String tglKeluhan = "2016-07-21 00:23:37";
Map<String,Object> result = papKeluhanTambahanService.findByNoCmAndTglkeluhan(DateUtil.toDate(tglKeluhan), noCm);
assertNotNull(result);
Boolean dataFound=new Boolean((boolean) result.get("dataFound"));
assertTrue(dataFound);
//assertEquals("keluhan pertama",((PapKeluhanTambahan) result.get("papKeluhanTambahan")).getKeluhanTambahan());
}
private PapKeluhanTambahanVO populateModelVO() throws ParseException{
PapKeluhanTambahanVO papKeluhanTambahanVO = new PapKeluhanTambahanVO();
Pasien pasien = pasienDao.findOne(547);
PasienVO pasienVO = pasienConverter.transferModelToVO(pasien,new PasienVO());
RegistrasiPelayananPasien registrasiPelayananPasien = registrasiPelayananpasienDao.findOne("2c9090ad56014d2c0156014f2f020003");
RegistrasiPelayananPasienVO registrasiPelayananPasienVO = registrasiPelayananPasienConverter.transferModelToVO(registrasiPelayananPasien,new RegistrasiPelayananPasienVO());
//papKeluhanTambahanVO.setRegistrasiPelayananPasien(registrasiPelayananPasienVO);
// papKeluhanTambahanVO.setPasien(pasienVO);
papKeluhanTambahanVO.setKeluhanTambahan("Keluhan tambahan");
papKeluhanTambahanVO.setTglInput(generateDate());
papKeluhanTambahanVO.setTglMerasaKeluhan(generateDate());
papKeluhanTambahanVO.setStatusEnabled(true);
return papKeluhanTambahanVO;
}
private PapKeluhanTambahanVO populateModelVOUpdate() throws ParseException{
PapKeluhanTambahanVO papKeluhanTambahanVO = new PapKeluhanTambahanVO();
Pasien pasien = pasienDao.findOne(547);
PasienVO pasienVO = pasienConverter.transferModelToVO(pasien,new PasienVO());
RegistrasiPelayananPasien registrasiPelayananPasien = registrasiPelayananpasienDao.findOne("2c9090ad56014d2c0156014f2f020003");
RegistrasiPelayananPasienVO registrasiPelayananPasienVO = registrasiPelayananPasienConverter.transferModelToVO(registrasiPelayananPasien,new RegistrasiPelayananPasienVO());
//papKeluhanTambahanVO.setRegistrasiPelayananPasien(registrasiPelayananPasienVO);
papKeluhanTambahanVO.setTglInput(generateDate());
papKeluhanTambahanVO.setTglMerasaKeluhan(generateDate());
//papKeluhanTambahanVO.setPasien(pasienVO);
papKeluhanTambahanVO.setStatusEnabled(false);
papKeluhanTambahanVO.setKeluhanTambahan("Keluhan tambahan update");
return papKeluhanTambahanVO;
}
@Test
public void testPopulate() throws ParseException{
/*Cek Method Populate*/
PapKeluhanTambahanVO papKeluhanTambahanVO = populateModelVO();
assertNotNull(papKeluhanTambahanVO);
/*Cek Dao*/
Pasien pasien = pasienDao.findOne(544);
assertNotNull(pasien);
assertEquals("Reynaldi Ramadhani Pratama",pasien.getNamaPasien());
/*Cek Converter*/
PasienVO pasienVO = pasienConverter.transferModelToVO(pasien,new PasienVO());
assertNotNull(pasienVO);
assertEquals("Reynaldi Ramadhani Pratama",pasienVO.getNamaPasien());
assertEquals("Keluhan tambahan",papKeluhanTambahanVO.getKeluhanTambahan());
}
private Date generateDate() throws ParseException{
SimpleDateFormat formatter = new SimpleDateFormat("EEEE, MMM dd, yyyy HH:mm:ss a");
String dateInString = "Friday, Jun 7, 2013 11:40:39 PM";
Date date = formatter.parse(dateInString);
return date;
}
}

View File

@ -1,138 +0,0 @@
package com.jasamedika.medifirst2000.service.test;
import static org.junit.Assert.*;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Map;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.transaction.annotation.Transactional;
import com.jasamedika.medifirst2000.converter.PasienConverter;
import com.jasamedika.medifirst2000.dao.PasienDao;
import com.jasamedika.medifirst2000.entities.PapKeluhanUtama;
import com.jasamedika.medifirst2000.entities.Pasien;
import com.jasamedika.medifirst2000.service.PapKeluhanUtamaService;
import com.jasamedika.medifirst2000.util.DateUtil;
import com.jasamedika.medifirst2000.vo.PapKeluhanUtamaVO;
import com.jasamedika.medifirst2000.vo.PasienVO;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath*:com/jasamedika/**/applicationContext.xml")
public class PapKeluhanUtamaServiceImplTest {
@Autowired
private PapKeluhanUtamaService papKeluhanUtamaService;
@Autowired
private PasienDao pasienDao;
@Autowired
private PasienConverter pasienConverter;
@Test
@Transactional
public void testAddKeluhanUtama() throws ParseException {
PapKeluhanUtamaVO papKeluhanUtamaVO = populateModelVO();
assertNotNull(papKeluhanUtamaVO);
Map<String,Object> result = papKeluhanUtamaService.addKeluhanUtama(papKeluhanUtamaVO);
assertNotNull(result);
assertEquals("Keluhan utama",((PapKeluhanUtama) result.get("papKeluhanUtama")).getKeluhanUtama());
// assertEquals("Setyo Wibudi",((PapKeluhanUtama) result.get("papKeluhanUtama")).getPasien().getNamaPasien());
}
@Test
@Transactional
public void testUpdateKeluhanUtama() throws ParseException {
PapKeluhanUtamaVO papKeluhanUtamaVO = populateModelVO();
Map<String,Object> result = papKeluhanUtamaService.addKeluhanUtama(papKeluhanUtamaVO);
assertNotNull(result);
PapKeluhanUtamaVO papKeluhanUtamaVOUpdate = populateModelVOUpdate();
papKeluhanUtamaVOUpdate.setNoRec(((PapKeluhanUtama) result.get("papKeluhanUtama")).getNoRec());
assertNotNull(papKeluhanUtamaVOUpdate);
assertEquals(papKeluhanUtamaVOUpdate.getNoRec(),((PapKeluhanUtama) result.get("papKeluhanUtama")).getNoRec());
Map<String,Object> resultUpdate = papKeluhanUtamaService.addKeluhanUtama(papKeluhanUtamaVOUpdate);
assertEquals(false,((PapKeluhanUtama) resultUpdate.get("papKeluhanUtama")).getStatusEnabled());
assertEquals("Keluhan utama update",((PapKeluhanUtama) resultUpdate.get("papKeluhanUtama")).getKeluhanUtama());
}
@Test
public void testFindByNoCmAndTglInput() {
String noCm = "000000000000005";
String tglInput = "2016-07-17 04:26:00";
Map<String,Object> result = papKeluhanUtamaService.findByNoCmAndTglInput(noCm, DateUtil.toDate(tglInput));
assertNotNull(result);
Boolean dataFound=new Boolean((boolean) result.get("dataFound"));
assertTrue(dataFound);
assertEquals("6786867867",((PapKeluhanUtama) result.get("papKeluhanUtama")).getKeluhanUtama());
}
@Test
public void testFindPasienByNoCm() {
String noCm = "000000000000005";
Map<String,Object> result = papKeluhanUtamaService.findPasienByNoCm(noCm);
assertNotNull(result);
Boolean dataFound=new Boolean((boolean) result.get("dataFound"));
assertTrue(dataFound);
assertEquals("6786867867",((PapKeluhanUtama) result.get("papKeluhanUtama")).getKeluhanUtama());
}
private PapKeluhanUtamaVO populateModelVO() throws ParseException{
PapKeluhanUtamaVO papKeluhanUtamaVO = new PapKeluhanUtamaVO();
Pasien pasien = pasienDao.findOne(547);
PasienVO pasienVO = pasienConverter.transferModelToVO(pasien,new PasienVO());
//papKeluhanUtamaVO.setPasien(pasienVO);
papKeluhanUtamaVO.setKeluhanUtama("Keluhan utama");
papKeluhanUtamaVO.setTglInput(generateDate());
papKeluhanUtamaVO.setStatusEnabled(true);
return papKeluhanUtamaVO;
}
private PapKeluhanUtamaVO populateModelVOUpdate() throws ParseException{
PapKeluhanUtamaVO papKeluhanUtamaVO = new PapKeluhanUtamaVO();
Pasien pasien = pasienDao.findOne(547);
PasienVO pasienVO = pasienConverter.transferModelToVO(pasien,new PasienVO());
papKeluhanUtamaVO.setTglInput(generateDate());
//papKeluhanUtamaVO.setPasien(pasienVO);
papKeluhanUtamaVO.setStatusEnabled(false);
papKeluhanUtamaVO.setKeluhanUtama("Keluhan utama update");
return papKeluhanUtamaVO;
}
@Test
public void testPopulate() throws ParseException{
/*Cek Method Populate*/
PapKeluhanUtamaVO papKeluhanUtamaVO = populateModelVO();
assertNotNull(papKeluhanUtamaVO);
/*Cek Dao*/
Pasien pasien = pasienDao.findOne(544);
assertNotNull(pasien);
assertEquals("Reynaldi Ramadhani Pratama",pasien.getNamaPasien());
/*Cek Converter*/
PasienVO pasienVO = pasienConverter.transferModelToVO(pasien,new PasienVO());
assertNotNull(pasienVO);
assertEquals("Reynaldi Ramadhani Pratama",pasienVO.getNamaPasien());
assertEquals("Keluhan utama",papKeluhanUtamaVO.getKeluhanUtama());
}
private Date generateDate() throws ParseException{
SimpleDateFormat formatter = new SimpleDateFormat("EEEE, MMM dd, yyyy HH:mm:ss a");
String dateInString = "Friday, Jun 7, 2013 11:40:39 PM";
Date date = formatter.parse(dateInString);
return date;
}
}

View File

@ -1,158 +0,0 @@
package com.jasamedika.medifirst2000.service.test;
import static org.junit.Assert.*;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Map;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.transaction.annotation.Transactional;
import com.jasamedika.medifirst2000.converter.PasienConverter;
import com.jasamedika.medifirst2000.dao.PasienDao;
import com.jasamedika.medifirst2000.entities.PapIntegumen;
import com.jasamedika.medifirst2000.entities.PapMuskuloskeletal;
import com.jasamedika.medifirst2000.entities.Pasien;
import com.jasamedika.medifirst2000.service.PapMuskuloskeletalService;
import com.jasamedika.medifirst2000.util.DateUtil;
import com.jasamedika.medifirst2000.vo.GerakanAnakVO;
import com.jasamedika.medifirst2000.vo.PapMuskuloskeletalVO;
import com.jasamedika.medifirst2000.vo.PasienVO;
import com.jasamedika.medifirst2000.vo.StatusAdaTidakAdaVO;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath*:com/jasamedika/**/applicationContext.xml")
public class PapMuskuloskeletalServiceImplTest {
@Autowired
private PapMuskuloskeletalService papMuskuloskeletalService;
@Autowired
private PasienDao pasienDao;
@Autowired
private PasienConverter pasienConverter;
@Test
@Transactional
public void testAddMuskuloskeletal() {
PapMuskuloskeletalVO papMuskuloskeletalVO = populateModel();
Map<String,Object> result = papMuskuloskeletalService.addMuskuloskeletal(papMuskuloskeletalVO);
assertNotNull(result);
assertEquals("Reynaldi Ramadhani Pratama",((PapMuskuloskeletal) result.get("papMuskuloskeletal")).getPasien().getNamaPasien());
assertEquals("Tidak ada",((PapMuskuloskeletal) result.get("papMuskuloskeletal")).getKelainanTulang().getName());
assertEquals("Bebas",((PapMuskuloskeletal) result.get("papMuskuloskeletal")).getGerakanAnak().getName());
assertNotNull(((PapMuskuloskeletal) result.get("papMuskuloskeletal")).getTglInput());
}
@Test
@Transactional
public void testUpdateMuskuloskeletal() {
PapMuskuloskeletalVO papMuskuloskeletalVO = populateModel();
Map<String,Object> result = papMuskuloskeletalService.addMuskuloskeletal(papMuskuloskeletalVO);
assertNotNull(result);
PapMuskuloskeletalVO papMuskuloskeletalVOUpdate = populateModelUpdate();
Map<String,Object> resultUpdate = papMuskuloskeletalService.addMuskuloskeletal(papMuskuloskeletalVOUpdate);
assertEquals("Reynaldi Ramadhani Pratama",((PapMuskuloskeletal) resultUpdate.get("papMuskuloskeletal")).getPasien().getNamaPasien());
assertEquals("Ada",((PapMuskuloskeletal) resultUpdate.get("papMuskuloskeletal")).getKelainanTulang().getName());
assertEquals("Terbatas",((PapMuskuloskeletal) resultUpdate.get("papMuskuloskeletal")).getGerakanAnak().getName());
assertNotNull(((PapMuskuloskeletal) resultUpdate.get("papMuskuloskeletal")).getTglInput());
}
@Test
@Transactional
public void testFindByNoCmAndTglInput() {
String noCm = "000001";
String tglInput = "2013-06-07 12:10:56";
Map<String,Object> result = papMuskuloskeletalService.findByNoCmAndTglInput(noCm, DateUtil.toDate(tglInput));
assertNotNull(result);
Boolean dataFound=new Boolean((boolean) result.get("dataFound"));
assertTrue(dataFound);
}
@Test
@Transactional
public void testPopulateModel(){
/*Cek Pasien Dao*/
Pasien pasien = pasienDao.findOne(544);
assertNotNull(pasien);
assertEquals("Reynaldi Ramadhani Pratama",pasien.getNamaPasien());
/*Cek Pasien Converter*/
PasienVO pasienVO = pasienConverter.transferModelToVO(pasien,new PasienVO());
assertNotNull(pasienVO);
assertEquals("Reynaldi Ramadhani Pratama",pasienVO.getNamaPasien());
/*Cek Atribut VO*/
StatusAdaTidakAdaVO statusAdaTidakAdaVO = new StatusAdaTidakAdaVO();
statusAdaTidakAdaVO.setId(1);
statusAdaTidakAdaVO.setName("Tidak Ada");
assertNotNull(statusAdaTidakAdaVO);
assertEquals(String.valueOf(1), String.valueOf(statusAdaTidakAdaVO.getId()));
assertEquals("Tidak Ada",statusAdaTidakAdaVO.getName());
GerakanAnakVO gerakanAnakVO = new GerakanAnakVO();
gerakanAnakVO.setId(1);
gerakanAnakVO.setName("Bebas");
assertEquals(String.valueOf(1), String.valueOf(gerakanAnakVO.getId()));
assertNotNull(gerakanAnakVO);
}
public PapMuskuloskeletalVO populateModel(){
PapMuskuloskeletalVO papMuskuloskeletalVO = new PapMuskuloskeletalVO();
Pasien pasien = pasienDao.findOne(544);
PasienVO pasienVO = pasienConverter.transferModelToVO(pasien,new PasienVO());
StatusAdaTidakAdaVO statusAdaTidakAdaVO = new StatusAdaTidakAdaVO();
statusAdaTidakAdaVO.setId(1);
statusAdaTidakAdaVO.setName("Tidak ada");
GerakanAnakVO gerakanAnakVO = new GerakanAnakVO();
gerakanAnakVO.setId(1);
gerakanAnakVO.setName("Bebas");
papMuskuloskeletalVO.setIsNormal(true);
papMuskuloskeletalVO.setKelainanTulang(statusAdaTidakAdaVO);
papMuskuloskeletalVO.setPasien(pasienVO);
papMuskuloskeletalVO.setTglInput(generateDate());
papMuskuloskeletalVO.setGerakanAnak(gerakanAnakVO);
return papMuskuloskeletalVO;
}
public PapMuskuloskeletalVO populateModelUpdate(){
PapMuskuloskeletalVO papMuskuloskeletalVO = new PapMuskuloskeletalVO();
Pasien pasien = pasienDao.findOne(544);
PasienVO pasienVO = pasienConverter.transferModelToVO(pasien,new PasienVO());
StatusAdaTidakAdaVO statusAdaTidakAdaVO = new StatusAdaTidakAdaVO();
statusAdaTidakAdaVO.setId(2);
statusAdaTidakAdaVO.setName("Ada");
GerakanAnakVO gerakanAnakVO = new GerakanAnakVO();
gerakanAnakVO.setId(2);
gerakanAnakVO.setName("Terbatas");
papMuskuloskeletalVO.setKelainanTulang(statusAdaTidakAdaVO);
papMuskuloskeletalVO.setPasien(pasienVO);
papMuskuloskeletalVO.setTglInput(new Date());
papMuskuloskeletalVO.setGerakanAnak(gerakanAnakVO);
return papMuskuloskeletalVO;
}
private Date generateDate(){
SimpleDateFormat formatter = new SimpleDateFormat("EEEE, MMM dd, yyyy HH:mm:ss a");
String dateInString = "Friday, Jun 7, 2013 12:10:56 PM";
Date date = null;
try {
date = formatter.parse(dateInString);
} catch (ParseException e) {
e.printStackTrace();
}
return date;
}
}

View File

@ -1,113 +0,0 @@
package com.jasamedika.medifirst2000.service.test;
import static org.junit.Assert.*;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Map;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.transaction.annotation.Transactional;
import com.jasamedika.medifirst2000.converter.PasienConverter;
import com.jasamedika.medifirst2000.dao.PasienDao;
import com.jasamedika.medifirst2000.entities.PapNeurologi;
import com.jasamedika.medifirst2000.entities.Pasien;
import com.jasamedika.medifirst2000.service.PapNeurologiService;
import com.jasamedika.medifirst2000.vo.PapNeurologiVO;
import com.jasamedika.medifirst2000.vo.PasienVO;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath*:com/jasamedika/**/applicationContext.xml")
public class PapNeurologiServiceImplTest {
@Autowired
private PapNeurologiService papNeurologiService;
@Autowired
private PasienDao pasienDao;
@Autowired
private PasienConverter pasienConverter;
@Test
public void testAddNeurologi() throws ParseException {
PapNeurologiVO papNeurologiVO = populateModelVO();
assertNotNull(papNeurologiVO);
Map<String,Object> result = papNeurologiService.addNeurologi(papNeurologiVO);
//assertEquals("15",((PapNeurologi) result.get("papNeurologi")).getLingkarPerut());
assertEquals(true,((PapNeurologi) result.get("papNeurologi")).getIsNormal());
assertNotNull(result);
}
@Test
@Transactional
public void testUpdateNeurologi() throws ParseException {
PapNeurologiVO papNeurologiVO = populateModelVO();
Map<String,Object> result = papNeurologiService.addNeurologi(papNeurologiVO);
assertNotNull(result);
PapNeurologiVO papNeurologiVOUpdate = populateModelVOUpdate();
papNeurologiVOUpdate.setNoRec(((PapNeurologi) result.get("papNeurologi")).getNoRec());
assertNotNull(papNeurologiVOUpdate);
assertEquals(papNeurologiVOUpdate.getNoRec(),((PapNeurologi) result.get("papNeurologi")).getNoRec());
Map<String,Object> resultUpdate = papNeurologiService.addNeurologi(papNeurologiVOUpdate);
assertEquals(false,((PapNeurologi) resultUpdate.get("papNeurologi")).getIsNormal());
assertEquals(false,((PapNeurologi) resultUpdate.get("papNeurologi")).getStatusEnabled());
}
private PapNeurologiVO populateModelVO() throws ParseException{
PapNeurologiVO papNeurologiVO = new PapNeurologiVO();
Pasien pasien = pasienDao.findOne(547);
PasienVO pasienVO = pasienConverter.transferModelToVO(pasien,new PasienVO());
papNeurologiVO.setTglInput(generateDate());
papNeurologiVO.setPasien(pasienVO);
papNeurologiVO.setIsNormal(true);
papNeurologiVO.setStatusEnabled(true);
return papNeurologiVO;
}
private PapNeurologiVO populateModelVOUpdate() throws ParseException{
PapNeurologiVO papNeurologiVO = new PapNeurologiVO();
Pasien pasien = pasienDao.findOne(547);
PasienVO pasienVO = pasienConverter.transferModelToVO(pasien,new PasienVO());
papNeurologiVO.setTglInput(generateDate());
papNeurologiVO.setPasien(pasienVO);
papNeurologiVO.setIsNormal(false);
papNeurologiVO.setStatusEnabled(false);
return papNeurologiVO;
}
@Test
public void testPopulate() throws ParseException{
/*Cek Method Populate*/
PapNeurologiVO papNeurologiVO = populateModelVO();
assertNotNull(papNeurologiVO);
/*Cek Dao*/
Pasien pasien = pasienDao.findOne(544);
assertNotNull(pasien);
assertEquals("Reynaldi Ramadhani Pratama",pasien.getNamaPasien());
/*Cek Converter*/
PasienVO pasienVO = pasienConverter.transferModelToVO(pasien,new PasienVO());
assertNotNull(pasienVO);
assertEquals("Reynaldi Ramadhani Pratama",pasienVO.getNamaPasien());
}
private Date generateDate() throws ParseException{
SimpleDateFormat formatter = new SimpleDateFormat("EEEE, MMM dd, yyyy HH:mm:ss a");
String dateInString = "Friday, Jun 7, 2013 11:40:39 PM";
Date date = formatter.parse(dateInString);
return date;
}
}

View File

@ -1,189 +0,0 @@
package com.jasamedika.medifirst2000.service.test;
import static org.junit.Assert.*;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Map;
import java.util.UUID;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.transaction.annotation.Transactional;
import com.jasamedika.medifirst2000.converter.PasienConverter;
import com.jasamedika.medifirst2000.dao.PasienDao;
import com.jasamedika.medifirst2000.entities.PapPernapasan;
import com.jasamedika.medifirst2000.entities.Pasien;
import com.jasamedika.medifirst2000.service.PapPernapasanService;
import com.jasamedika.medifirst2000.service.PasienService;
import com.jasamedika.medifirst2000.util.DateUtil;
import com.jasamedika.medifirst2000.vo.DataAlatBantuNafasVO;
import com.jasamedika.medifirst2000.vo.PapPernapasanVO;
import com.jasamedika.medifirst2000.vo.PasienVO;
import com.jasamedika.medifirst2000.vo.StatusAdaTidakAdaVO;
import com.jasamedika.medifirst2000.vo.StatusNormalTidakNormalVO;
import com.jasamedika.medifirst2000.vo.StatusRegulerIrregulerVO;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath*:com/jasamedika/**/applicationContext.xml")
public class PapPernapasanServiceImplTest {
@Autowired
private PapPernapasanService papPernapasanService;
@Autowired
private PasienService pasienService;
@Autowired
public PasienDao pasienDao;
@Autowired
public PasienConverter pasienConverter;
//public PasienVO pasienVO;
@Transactional
@Test
public void testAddPernapasan() throws ParseException {
PapPernapasanVO papPernapasanVO = populateModelVO();
assertNotNull(papPernapasanVO);
Map<String,Object> result = papPernapasanService.addPernapasan(papPernapasanVO);
assertNotNull(result);
assertEquals(true,((PapPernapasan) result.get("papPernapasan")).getIsNormal());
}
@Test
@Transactional
public void testUpdatePernapasan() throws ParseException {
PapPernapasanVO papPernapasanVO = populateModelVO();
Map<String,Object> result = papPernapasanService.addPernapasan(papPernapasanVO);
assertNotNull(result);
PapPernapasanVO papPernapasanVOUpdate = populateModelVOUpdate();
papPernapasanVOUpdate.setNoRec(((PapPernapasan) result.get("papPernapasan")).getNoRec());
assertNotNull(papPernapasanVOUpdate);
assertEquals(papPernapasanVOUpdate.getNoRec(),((PapPernapasan) result.get("papPernapasan")).getNoRec());
Map<String,Object> resultUpdate = papPernapasanService.addPernapasan(papPernapasanVOUpdate);
assertEquals(false,((PapPernapasan) resultUpdate.get("papPernapasan")).getIsNormal());
assertEquals(false,((PapPernapasan) resultUpdate.get("papPernapasan")).getStatusEnabled());
}
@Test
public void testFindByNoCmAndTglInput() {
String noCm = "000000000000005";
String tglInput = "2016-07-17 04:26:00";
Map<String,Object> result = papPernapasanService.findByNoCmAndTglInput(noCm, DateUtil.toDate(tglInput));
assertNotNull(result);
Boolean dataFound=new Boolean((boolean) result.get("dataFound"));
assertTrue(dataFound);
}
private PapPernapasanVO populateModelVO() throws ParseException{
PapPernapasanVO papPernapasanVO = new PapPernapasanVO();
Pasien pasien = pasienDao.findOne(547);
PasienVO pasienVO = pasienConverter.transferModelToVO(pasien,new PasienVO());
papPernapasanVO.setPasien(pasienVO);
final String uuid = UUID.randomUUID().toString().replaceAll("-", "");
papPernapasanVO.setNoRec(uuid);
DataAlatBantuNafasVO alatBantuNafasVO = new DataAlatBantuNafasVO();
alatBantuNafasVO.setId(1);
papPernapasanVO.setAlatBantuNafas(alatBantuNafasVO);
StatusNormalTidakNormalVO bentukDadaVO = new StatusNormalTidakNormalVO();
bentukDadaVO.setId(1);
papPernapasanVO.setBentukDada(bentukDadaVO);
StatusRegulerIrregulerVO iramaVO = new StatusRegulerIrregulerVO();
iramaVO.setId(1);
papPernapasanVO.setIrama(iramaVO);
StatusAdaTidakAdaVO retraksiDadaVO = new StatusAdaTidakAdaVO();
retraksiDadaVO.setId(1);
papPernapasanVO.setRetraksiDada(retraksiDadaVO);
papPernapasanVO.setTglInput(generateDate());
StatusNormalTidakNormalVO polaNapasVO = new StatusNormalTidakNormalVO();
polaNapasVO.setId(1);
papPernapasanVO.setPolaNapas(polaNapasVO);
StatusNormalTidakNormalVO suaraNapasVO = new StatusNormalTidakNormalVO();
suaraNapasVO.setId(1);
papPernapasanVO.setSuaraNapas(suaraNapasVO);
StatusAdaTidakAdaVO nafasKupingHidungVO = new StatusAdaTidakAdaVO();
nafasKupingHidungVO.setId(1);
papPernapasanVO.setNafasKupingHidung(nafasKupingHidungVO);
StatusAdaTidakAdaVO sianosisVO = new StatusAdaTidakAdaVO();
sianosisVO.setId(1);
papPernapasanVO.setSianosis(sianosisVO);
papPernapasanVO.setKdProfile((short) 897);
papPernapasanVO.setIsNormal(true);
papPernapasanVO.setStatusEnabled(true);
return papPernapasanVO;
}
private PapPernapasanVO populateModelVOUpdate() throws ParseException{
PapPernapasanVO papPernapasanVO = new PapPernapasanVO();
Pasien pasien = pasienDao.findOne(547);
PasienVO pasienVO = pasienConverter.transferModelToVO(pasien,new PasienVO());
papPernapasanVO.setPasien(pasienVO);
final String uuid = UUID.randomUUID().toString().replaceAll("-", "");
papPernapasanVO.setNoRec(uuid);
DataAlatBantuNafasVO alatBantuNafasVO = new DataAlatBantuNafasVO();
alatBantuNafasVO.setId(1);
papPernapasanVO.setAlatBantuNafas(alatBantuNafasVO);
StatusNormalTidakNormalVO bentukDadaVO = new StatusNormalTidakNormalVO();
bentukDadaVO.setId(1);
papPernapasanVO.setBentukDada(bentukDadaVO);
StatusRegulerIrregulerVO iramaVO = new StatusRegulerIrregulerVO();
iramaVO.setId(1);
papPernapasanVO.setIrama(iramaVO);
StatusAdaTidakAdaVO retraksiDadaVO = new StatusAdaTidakAdaVO();
retraksiDadaVO.setId(1);
papPernapasanVO.setRetraksiDada(retraksiDadaVO);
papPernapasanVO.setTglInput(generateDate());
StatusNormalTidakNormalVO polaNapasVO = new StatusNormalTidakNormalVO();
polaNapasVO.setId(1);
papPernapasanVO.setPolaNapas(polaNapasVO);
StatusNormalTidakNormalVO suaraNapasVO = new StatusNormalTidakNormalVO();
suaraNapasVO.setId(1);
papPernapasanVO.setSuaraNapas(suaraNapasVO);
StatusAdaTidakAdaVO nafasKupingHidungVO = new StatusAdaTidakAdaVO();
nafasKupingHidungVO.setId(1);
papPernapasanVO.setNafasKupingHidung(nafasKupingHidungVO);
StatusAdaTidakAdaVO sianosisVO = new StatusAdaTidakAdaVO();
sianosisVO.setId(1);
papPernapasanVO.setSianosis(sianosisVO);
papPernapasanVO.setKdProfile((short) 890);
papPernapasanVO.setIsNormal(false);
papPernapasanVO.setStatusEnabled(false);
return papPernapasanVO;
}
private Date generateDate() throws ParseException{
SimpleDateFormat formatter = new SimpleDateFormat("EEEE, MMM dd, yyyy HH:mm:ss a");
String dateInString = "Friday, Jun 7, 2013 12:10:56 PM";
Date date = formatter.parse(dateInString);
return date;
}
}

View File

@ -1,145 +0,0 @@
package com.jasamedika.medifirst2000.service.test;
import static org.junit.Assert.*;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Map;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.transaction.annotation.Transactional;
import com.jasamedika.medifirst2000.converter.PasienConverter;
import com.jasamedika.medifirst2000.dao.PasienDao;
import com.jasamedika.medifirst2000.entities.PapRehabilitasi;
import com.jasamedika.medifirst2000.entities.Pasien;
import com.jasamedika.medifirst2000.service.PapRehabilitasiService;
import com.jasamedika.medifirst2000.util.DateUtil;
import com.jasamedika.medifirst2000.vo.PapRehabilitasiVO;
import com.jasamedika.medifirst2000.vo.PasienVO;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath*:com/jasamedika/**/applicationContext.xml")
public class PapRehabilitasiServiceImplTest {
@Autowired
private PapRehabilitasiService papRehabilitasiService;
@Autowired
private PasienDao pasienDao;
@Autowired
private PasienConverter pasienConverter;
@Test
@Transactional
public void testAddRehabilitasi() throws ParseException {
PapRehabilitasiVO papRehabilitasiVO = populateModelVO();
assertNotNull(papRehabilitasiVO);
Map<String,Object> result = papRehabilitasiService.addRehabilitasi(papRehabilitasiVO);
assertNotNull(result);
assertEquals("Setyo Wibudi",((PapRehabilitasi) result.get("papRehabilitasi")).getPasien().getNamaPasien());
}
@Test
@Transactional
public void testUpdateRehabilitasi() throws ParseException {
PapRehabilitasiVO papRehabilitasiVO = populateModelVO();
Map<String,Object> result = papRehabilitasiService.addRehabilitasi(papRehabilitasiVO);
assertNotNull(result);
PapRehabilitasiVO papRehabilitasiVOUpdate = populateModelVOUpdate();
papRehabilitasiVOUpdate.setNoRec(((PapRehabilitasi) result.get("papRehabilitasi")).getNoRec());
assertNotNull(papRehabilitasiVOUpdate);
assertEquals(papRehabilitasiVOUpdate.getNoRec(),((PapRehabilitasi) result.get("papRehabilitasi")).getNoRec());
Map<String,Object> resultUpdate = papRehabilitasiService.addRehabilitasi(papRehabilitasiVOUpdate);
assertEquals(false,((PapRehabilitasi) resultUpdate.get("papRehabilitasi")).getStatusEnabled());
}
@Test
public void testFindByNoCmAndTglInput() {
String noCm = "000003";
String tglInput = "2013-06-07 11:40:39";
Map<String,Object> result = papRehabilitasiService.findByNoCmAndTglInput(noCm, DateUtil.toDate(tglInput));
assertNotNull(result);
Boolean dataFound=new Boolean((boolean) result.get("dataFound"));
assertTrue(dataFound);
}
@Test
public void testFindByNoCmAndTglRegistrasi() {
String noCm = "000001";
String tglRegistrasi = "2016-07-17 02:12:03";
//Map<String,Object> result = papRehabilitasiService.findByNoCmAndTglInput(noCm, DateUtil.toDate(tglInput));
Map<String,Object> result = papRehabilitasiService.findRegistrasiPelayananPasienByNoCmAndTglRegistrasi(noCm,(short) 0, DateUtil.toDate(tglRegistrasi));
assertNotNull(result);
Boolean dataFound=new Boolean((boolean) result.get("dataFound"));
assertTrue(dataFound);
}
@Test
public void testFindPasienByNoCm() {
String noCm = "000000000000002";
Map<String,Object> result = papRehabilitasiService.findPasienByNoCm(noCm);
assertNotNull(result);
Boolean dataFound=new Boolean((boolean) result.get("dataFound"));
assertTrue(dataFound);
}
private PapRehabilitasiVO populateModelVO() throws ParseException{
PapRehabilitasiVO papRehabilitasiVO = new PapRehabilitasiVO();
Pasien pasien = pasienDao.findOne(547);
PasienVO pasienVO = pasienConverter.transferModelToVO(pasien,new PasienVO());
papRehabilitasiVO.setPasien(pasienVO);
papRehabilitasiVO.setTglInput(generateDate());
papRehabilitasiVO.setStatusEnabled(true);
return papRehabilitasiVO;
}
private PapRehabilitasiVO populateModelVOUpdate() throws ParseException{
PapRehabilitasiVO papRehabilitasiVO = new PapRehabilitasiVO();
Pasien pasien = pasienDao.findOne(547);
PasienVO pasienVO = pasienConverter.transferModelToVO(pasien,new PasienVO());
papRehabilitasiVO.setTglInput(generateDate());
papRehabilitasiVO.setPasien(pasienVO);
papRehabilitasiVO.setStatusEnabled(false);
return papRehabilitasiVO;
}
@Test
public void testPopulate() throws ParseException{
/*Cek Method Populate*/
PapRehabilitasiVO papRehabilitasiVO = populateModelVO();
assertNotNull(papRehabilitasiVO);
/*Cek Dao*/
Pasien pasien = pasienDao.findOne(544);
assertNotNull(pasien);
assertEquals("Reynaldi Ramadhani Pratama",pasien.getNamaPasien());
/*Cek Converter*/
PasienVO pasienVO = pasienConverter.transferModelToVO(pasien,new PasienVO());
assertNotNull(pasienVO);
assertEquals("Reynaldi Ramadhani Pratama",pasienVO.getNamaPasien());
}
private Date generateDate() throws ParseException{
SimpleDateFormat formatter = new SimpleDateFormat("EEEE, MMM dd, yyyy HH:mm:ss a");
String dateInString = "Friday, Jun 7, 2013 11:40:39 PM";
Date date = formatter.parse(dateInString);
return date;
}
}

View File

@ -1,142 +0,0 @@
package com.jasamedika.medifirst2000.service.test;
import static org.junit.Assert.*;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Map;
import java.util.UUID;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.transaction.annotation.Transactional;
import com.jasamedika.medifirst2000.converter.PasienConverter;
import com.jasamedika.medifirst2000.dao.PasienDao;
import com.jasamedika.medifirst2000.entities.PapSirkulasi;
import com.jasamedika.medifirst2000.entities.PapGenatalia;
import com.jasamedika.medifirst2000.entities.Pasien;
import com.jasamedika.medifirst2000.service.AgamaService;
import com.jasamedika.medifirst2000.service.PapSirkulasiService;
import com.jasamedika.medifirst2000.util.DateUtil;
import com.jasamedika.medifirst2000.vo.PapSirkulasiVO;
import com.jasamedika.medifirst2000.vo.PasienVO;
import com.jasamedika.medifirst2000.vo.StatusAdaTidakAdaVO;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath*:com/jasamedika/**/applicationContext.xml")
public class PapSirkulasiServiceImplTest {
@Autowired
private PapSirkulasiService papSirkulasiService;
@Autowired
private PasienDao pasienDao;
@Autowired
private PasienConverter pasienConverter;
@Test
@Transactional
public void testAddSirkulasi() throws ParseException {
PapSirkulasiVO papSirkulasiVO = populateModelVO();
assertNotNull(papSirkulasiVO);
Map<String,Object> result = papSirkulasiService.addSirkulasi(papSirkulasiVO);
assertEquals(true,((PapSirkulasi) result.get("papSirkulasi")).getIsNormal());
assertNotNull(result);
}
@Test
@Transactional
public void testUpdateSirkulasi() throws ParseException {
PapSirkulasiVO papSirkulasiVO = populateModelVO();
Map<String,Object> result = papSirkulasiService.addSirkulasi(papSirkulasiVO);
assertNotNull(result);
PapSirkulasiVO papSirkulasiVOUpdate = populateModelVOUpdate();
papSirkulasiVOUpdate.setNoRec(((PapSirkulasi) result.get("papSirkulasi")).getNoRec());
assertNotNull(papSirkulasiVOUpdate);
assertEquals(papSirkulasiVOUpdate.getNoRec(),((PapSirkulasi) result.get("papSirkulasi")).getNoRec());
Map<String,Object> resultUpdate = papSirkulasiService.addSirkulasi(papSirkulasiVOUpdate);
assertEquals(false,((PapSirkulasi) resultUpdate.get("papSirkulasi")).getIsNormal());
assertEquals(false,((PapSirkulasi) resultUpdate.get("papSirkulasi")).getStatusEnabled());
}
private PapSirkulasiVO populateModelVO() throws ParseException{
PapSirkulasiVO papSirkulasiVO = new PapSirkulasiVO();
Pasien pasien = pasienDao.findOne(547);
PasienVO pasienVO = pasienConverter.transferModelToVO(pasien,new PasienVO());
StatusAdaTidakAdaVO sianosisVO = new StatusAdaTidakAdaVO();
sianosisVO.setName("Tidak ada");
sianosisVO.setId(1);
papSirkulasiVO.setSianosis(sianosisVO);
StatusAdaTidakAdaVO pucatVO = new StatusAdaTidakAdaVO();
pucatVO.setName("Tidak ada");
pucatVO.setId(1);
papSirkulasiVO.setPucat(pucatVO);
papSirkulasiVO.setTglInput(generateDate());
papSirkulasiVO.setPasien(pasienVO);
papSirkulasiVO.setIsNormal(true);
papSirkulasiVO.setStatusEnabled(true);
return papSirkulasiVO;
}
@Test
public void testFindByNoCmAndTglInput() {
String noCm = "000000000000005";
String tglInput = "2016-07-17 04:26:00";
Map<String,Object> result = papSirkulasiService.findByNoCmAndTglInput(noCm, DateUtil.toDate(tglInput));
assertNotNull(result);
Boolean dataFound=new Boolean((boolean) result.get("dataFound"));
assertTrue(dataFound);
}
private PapSirkulasiVO populateModelVOUpdate() throws ParseException{
PapSirkulasiVO papSirkulasiVO = new PapSirkulasiVO();
Pasien pasien = pasienDao.findOne(547);
PasienVO pasienVO = pasienConverter.transferModelToVO(pasien,new PasienVO());
papSirkulasiVO.setTglInput(generateDate());
papSirkulasiVO.setPasien(pasienVO);
papSirkulasiVO.setIsNormal(false);
papSirkulasiVO.setStatusEnabled(false);
return papSirkulasiVO;
}
@Test
public void testPopulate() throws ParseException{
/*Cek Method Populate*/
PapSirkulasiVO papSirkulasiVO = populateModelVO();
assertNotNull(papSirkulasiVO);
/*Cek Dao*/
Pasien pasien = pasienDao.findOne(544);
assertNotNull(pasien);
assertEquals("Reynaldi Ramadhani Pratama",pasien.getNamaPasien());
/*Cek Converter*/
PasienVO pasienVO = pasienConverter.transferModelToVO(pasien,new PasienVO());
assertNotNull(pasienVO);
assertEquals("Reynaldi Ramadhani Pratama",pasienVO.getNamaPasien());
}
private Date generateDate() throws ParseException{
SimpleDateFormat formatter = new SimpleDateFormat("EEEE, MMM dd, yyyy HH:mm:ss a");
String dateInString = "Friday, Jun 7, 2013 11:40:39 PM";
Date date = formatter.parse(dateInString);
return date;
}
}

View File

@ -1,146 +0,0 @@
package com.jasamedika.medifirst2000.service.test;
import static org.junit.Assert.*;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Map;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.transaction.annotation.Transactional;
import com.jasamedika.medifirst2000.converter.PasienConverter;
import com.jasamedika.medifirst2000.dao.PasienDao;
import com.jasamedika.medifirst2000.entities.PapSkriningGizi;
import com.jasamedika.medifirst2000.entities.Pasien;
import com.jasamedika.medifirst2000.service.PapSkriningGiziService;
import com.jasamedika.medifirst2000.vo.PapSkriningGiziVO;
import com.jasamedika.medifirst2000.vo.PasienVO;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath*:com/jasamedika/**/applicationContext.xml")
public class PapSkriningGiziServiceImplTest {
@Autowired
private PapSkriningGiziService papSkriningGiziService;
@Autowired
private PasienDao pasienDao;
@Autowired
private PasienConverter pasienConverter;
@Test
@Transactional
public void testAddSkriningGizi() {
PapSkriningGiziVO vo = populateModel();
Map<String,Object> result = papSkriningGiziService.addSkriningGizi(vo);
assertNotNull(result);
PapSkriningGizi papSkriningGizi = (PapSkriningGizi) result.get("papSkriningGizi");
assertNotNull(papSkriningGizi);
assertEquals(generateDate(),papSkriningGizi.getTglInput());
assertEquals(String.valueOf((float) 170),String.valueOf(papSkriningGizi.getTinggiBadan()));
assertEquals(String.valueOf((float) 68),String.valueOf(papSkriningGizi.getBeratBadan()));
assertEquals(String.valueOf((float) 60),String.valueOf(papSkriningGizi.getLingkarKepala()));
}
@Test
@Transactional
public void testUpdateSkriningGizi() {
PapSkriningGiziVO vo = populateModel();
Map<String,Object> result = papSkriningGiziService.addSkriningGizi(vo);
assertNotNull(result);
PapSkriningGiziVO voUpdate = populateModel();
voUpdate.setBeratBadan((float) 100);
voUpdate.setTinggiBadan((float) 100);
voUpdate.setLingkarKepala((float) 100);
Map<String,Object> resultUpdate = papSkriningGiziService.addSkriningGizi(voUpdate);
assertNotNull(resultUpdate);
PapSkriningGizi papSkriningGizi = (PapSkriningGizi) resultUpdate.get("papSkriningGizi");
assertNotNull(papSkriningGizi);
assertEquals(generateDate(),papSkriningGizi.getTglInput());
assertEquals(String.valueOf((float) 100),String.valueOf(papSkriningGizi.getTinggiBadan()));
assertEquals(String.valueOf((float) 100),String.valueOf(papSkriningGizi.getBeratBadan()));
assertEquals(String.valueOf((float) 100),String.valueOf(papSkriningGizi.getLingkarKepala()));
}
@Test
@Transactional
public void testFindByNoCmAndTglInput() {
Date date = generateDatefromString("06/07/2013 12:10:56");
Map<String,Object> result = papSkriningGiziService.findByNoCmAndTglInput("000001", date);
assertNotNull(result);
}
@Test
@Transactional
public void testPopulateModel(){
/*Cek Pasien Dao*/
Pasien pasien = pasienDao.findOne(544);
assertNotNull(pasien);
assertEquals("Reynaldi Ramadhani Pratama",pasien.getNamaPasien());
/*Cek Pasien Converter*/
PasienVO pasienVO = pasienConverter.transferModelToVO(pasien,new PasienVO());
assertNotNull(pasienVO);
assertEquals("Reynaldi Ramadhani Pratama",pasienVO.getNamaPasien());
/*Cek Populate Model*/
PapSkriningGiziVO vo = populateModel();
assertNotNull(vo);
assertEquals(generateDate(),vo.getTglInput());
assertEquals(String.valueOf((float) 170),String.valueOf(vo.getTinggiBadan()));
assertEquals(String.valueOf((float) 68),String.valueOf(vo.getBeratBadan()));
assertEquals(String.valueOf((float) 60),String.valueOf(vo.getLingkarKepala()));
}
private PapSkriningGiziVO populateModel(){
PapSkriningGiziVO vo = new PapSkriningGiziVO();
Pasien pasien = pasienDao.findOne(544);
PasienVO pasienVO = pasienConverter.transferModelToVO(pasien,new PasienVO());
// vo.setPasien(pasienVO);
vo.setTglInput(generateDate());
vo.setTinggiBadan((float) 170);
vo.setBeratBadan((float) 68);
vo.setLingkarKepala((float) 60);
return vo;
}
private Date generateDate(){
SimpleDateFormat formatter = new SimpleDateFormat("EEEE, MMM dd, yyyy HH:mm:ss a");
String dateInString = "Friday, Jun 7, 2013 12:10:56 PM";
Date date = null;
try {
date = formatter.parse(dateInString);
} catch (ParseException e) {
e.printStackTrace();
}
return date;
}
private Date generateDatefromString(String string){
SimpleDateFormat formatter = new SimpleDateFormat("MM/dd/yyyy hh:mm:ss");
Date date = null;
try {
date = formatter.parse(string);
} catch (ParseException e) {
e.printStackTrace();
}
return date;
}
}

View File

@ -1,179 +0,0 @@
package com.jasamedika.medifirst2000.service.test;
import static org.junit.Assert.*;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Map;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.transaction.annotation.Transactional;
import com.jasamedika.medifirst2000.converter.PasienConverter;
import com.jasamedika.medifirst2000.dao.PasienDao;
import com.jasamedika.medifirst2000.entities.DataLokasiNyeri;
import com.jasamedika.medifirst2000.entities.PapMuskuloskeletal;
import com.jasamedika.medifirst2000.entities.PapSkriningNyeri;
import com.jasamedika.medifirst2000.entities.Pasien;
import com.jasamedika.medifirst2000.service.PapSkriningNyeriService;
import com.jasamedika.medifirst2000.util.DateUtil;
import com.jasamedika.medifirst2000.vo.DataLokasiNyeriVO;
import com.jasamedika.medifirst2000.vo.DataTipeNyeriVO;
import com.jasamedika.medifirst2000.vo.PapSkriningNyeriVO;
import com.jasamedika.medifirst2000.vo.PasienVO;
import com.jasamedika.medifirst2000.vo.StatusAdaTidakAdaVO;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath*:com/jasamedika/**/applicationContext.xml")
public class PapSkriningNyeriServiceImplTest {
@Autowired
private PapSkriningNyeriService papSkriningNyeriService;
@Autowired
private PasienDao pasienDao;
@Autowired
private PasienConverter pasienConverter;
@Test
@Transactional
public void testAddSkriningNyeri() {
PapSkriningNyeriVO papSkrinigNyeriVO = populateModel();
Map<String,Object> result = papSkriningNyeriService.addSkriningNyeri(papSkrinigNyeriVO);
assertNotNull(result);
PapSkriningNyeri papSkriningNyeri = ((PapSkriningNyeri) result.get("papSkriningNyeri"));
// assertNotNull(papSkriningNyeri);
// assertNotNull(papSkriningNyeri.getPasien());
// assertEquals("Reynaldi Ramadhani Pratama",((PapSkriningNyeri) result.get("papSkriningNyeri")).getPasien().getNamaPasien());
// assertEquals("Frekuensi",((PapSkriningNyeri) result.get("papSkriningNyeri")).getFrekuensi());
// assertEquals("Durasi",((PapSkriningNyeri) result.get("papSkriningNyeri")).getDurasi());
// assertEquals("Tidak ada",((PapSkriningNyeri) result.get("papSkriningNyeri")).getRasaNyeri().getName());
}
@Test
@Transactional
public void testUpdateSkriningNyeri() {
PapSkriningNyeriVO papSkrinigNyeriVO = populateModel();
Map<String,Object> result = papSkriningNyeriService.addSkriningNyeri(papSkrinigNyeriVO);
assertNotNull(result);
PapSkriningNyeriVO papSkrinigNyeriVOUpdate = populateModel();
papSkrinigNyeriVOUpdate.setDurasi("Durasi Update");
papSkrinigNyeriVOUpdate.setFrekuensi("Frekuensi Update");
Map<String,Object> resultUpdate = papSkriningNyeriService.addSkriningNyeri(papSkrinigNyeriVOUpdate);
assertNotNull(resultUpdate);
// PapSkriningNyeri papSkriningNyeri = ((PapSkriningNyeri) resultUpdate.get("papSkriningNyeri"));
// assertNotNull(papSkriningNyeri);
// assertNotNull(papSkriningNyeri.getPasien());
// assertEquals("Frekuensi",((PapSkriningNyeri) resultUpdate.get("papSkriningNyeri")).getFrekuensi());
// assertEquals("Durasi",((PapSkriningNyeri) resultUpdate.get("papSkriningNyeri")).getDurasi());
// assertEquals("Tidak ada",((PapSkriningNyeri) resultUpdate.get("papSkriningNyeri")).getRasaNyeri().getName());
}
@Test
@Transactional
public void testFindByNoCmAndTglInput() {
Map<String,Object> result = papSkriningNyeriService.findByNoCmAndTglInput("000000000000005", DateUtil.toDate("2016-07-17 04:26:00"));
Boolean dataFound=new Boolean((boolean) result.get("dataFound"));
assertTrue(dataFound);
}
@Test
@Transactional
public void testFindRegistrasiPelayananPasienByNoCmAndTglRegistrasi() {
Map<String,Object> result = papSkriningNyeriService.findByNoCmAndTglInput("000000000000005", DateUtil.toDate("2016-07-17 04:26:00"));
Boolean dataFound=new Boolean((boolean) result.get("dataFound"));
assertTrue(dataFound);
}
@Test
@Transactional
public void testfindRegistrasiPelayanaPasien() {
Map<String,Object> result = papSkriningNyeriService.findRegistrasiPelayananPasienByNoCmAndTglRegistrasi("000000000000005",(short) 0, DateUtil.toDate("2016-07-17 05:41:29"));
Boolean dataFound=new Boolean((boolean) result.get("dataFound"));
// assertTrue(dataFound);
assertFalse(dataFound);
}
@Test
@Transactional
public void testFindPasienByNoCm() {
Map<String,Object> result = papSkriningNyeriService.findPasienByNoCm("000000000000005");
Boolean dataFound=new Boolean((boolean) result.get("dataFound"));
assertTrue(dataFound);
}
@Test
@Transactional
public void testPopulateModel(){
/*Cek Pasien Dao*/
Pasien pasien = pasienDao.findOne(544);
assertNotNull(pasien);
assertEquals("Reynaldi Ramadhani Pratama",pasien.getNamaPasien());
/*Cek Pasien Converter*/
PasienVO pasienVO = pasienConverter.transferModelToVO(pasien,new PasienVO());
assertNotNull(pasienVO);
assertEquals("Reynaldi Ramadhani Pratama",pasienVO.getNamaPasien());
/*Cek Atribut VO*/
StatusAdaTidakAdaVO statusAdaTidakAdaVO = new StatusAdaTidakAdaVO();
statusAdaTidakAdaVO.setId(1);
statusAdaTidakAdaVO.setName("Tidak Ada");
assertNotNull(statusAdaTidakAdaVO);
assertEquals(String.valueOf(1), String.valueOf(statusAdaTidakAdaVO.getId()));
assertEquals("Tidak Ada",statusAdaTidakAdaVO.getName());
/*Cek PopulateModel*/
PapSkriningNyeriVO papSkriningNyeriVO = populateModel();
assertEquals("Frekuensi",papSkriningNyeriVO.getFrekuensi());
assertEquals("Durasi",papSkriningNyeriVO.getDurasi());
assertEquals("Lokasi nyeri 1",papSkriningNyeriVO.getLokasiNyeri().getName());
assertEquals("Terus menerus",papSkriningNyeriVO.getTypeNyeri().getName());
}
private PapSkriningNyeriVO populateModel(){
PapSkriningNyeriVO papSkriningNyeriVO = new PapSkriningNyeriVO();
Pasien pasien = pasienDao.findOne(544);
PasienVO pasienVO = pasienConverter.transferModelToVO(pasien,new PasienVO());
StatusAdaTidakAdaVO statusAdaTidakAdaVO = new StatusAdaTidakAdaVO();
statusAdaTidakAdaVO.setId(1);
statusAdaTidakAdaVO.setName("Tidak ada");
DataLokasiNyeriVO dataLokasiNyeriVO = new DataLokasiNyeriVO();
dataLokasiNyeriVO.setId(1);
dataLokasiNyeriVO.setName("Lokasi nyeri 1");
DataTipeNyeriVO dataTypeNyeriVO = new DataTipeNyeriVO();
dataTypeNyeriVO.setId(1);
dataTypeNyeriVO.setName("Terus menerus");
papSkriningNyeriVO.setFrekuensi("Frekuensi");
papSkriningNyeriVO.setRasaNyeri(statusAdaTidakAdaVO);
papSkriningNyeriVO.setDurasi("Durasi");
papSkriningNyeriVO.setTypeNyeri(dataTypeNyeriVO);
papSkriningNyeriVO.setLokasiNyeri(dataLokasiNyeriVO);
//papSkriningNyeriVO.setPasien(pasienVO);
papSkriningNyeriVO.setTglInput(generateDate());
return papSkriningNyeriVO;
}
private Date generateDate(){
SimpleDateFormat formatter = new SimpleDateFormat("EEEE, MMM dd, yyyy HH:mm:ss a");
String dateInString = "Friday, Jun 7, 2013 12:10:56 PM";
Date date = null;
try {
date = formatter.parse(dateInString);
} catch (ParseException e) {
e.printStackTrace();
}
return date;
}
}

View File

@ -1,144 +0,0 @@
package com.jasamedika.medifirst2000.service.test;
import static org.junit.Assert.*;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Map;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.transaction.annotation.Transactional;
import com.jasamedika.medifirst2000.converter.PasienConverter;
import com.jasamedika.medifirst2000.dao.PasienDao;
import com.jasamedika.medifirst2000.entities.PapTandaVital;
import com.jasamedika.medifirst2000.entities.Pasien;
import com.jasamedika.medifirst2000.service.PapTandaVitalService;
import com.jasamedika.medifirst2000.util.DateUtil;
import com.jasamedika.medifirst2000.vo.PapTandaVitalVO;
import com.jasamedika.medifirst2000.vo.PasienVO;
import com.jasamedika.medifirst2000.vo.StatusYaTidakVO;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath*:com/jasamedika/**/applicationContext.xml")
public class PapTandaVitalServiceImplTest {
@Autowired
private PapTandaVitalService papTandaVitalService;
@Autowired
private PasienDao pasienDao;
@Autowired
private PasienConverter pasienConverter;
@Test
@Transactional
public void testAddTandaVital() {
/*PapTandaVitalVO vo = populateModel();
Map<String,Object> result = papTandaVitalService.addTandaVital(vo);
assertNotNull(result);
PapTandaVital papTandaVital = (PapTandaVital) result.get("papTandaVital");
//assertEquals("Reynaldi Ramadhani Pratama", papTandaVital.getPasien().getNamaPasien());
assertEquals("Tidak", papTandaVital.getKesadaran().getName());
assertEquals(generateDate(), papTandaVital.getTglInput());*/
}
@Test
@Transactional
public void testUpdateTandaVital() {
/*PapTandaVitalVO vo = populateModel();
Map<String,Object> result = papTandaVitalService.addTandaVital(vo);
assertNotNull(result);
PapTandaVitalVO voUpdate = populateModel();
StatusYaTidakVO statusYaTidakVO = new StatusYaTidakVO();
statusYaTidakVO.setId(2);
statusYaTidakVO.setName("Ya");
voUpdate.setKesadaran(statusYaTidakVO);
Map<String,Object> resultUpdate = papTandaVitalService.addTandaVital(voUpdate);
assertNotNull(resultUpdate);
PapTandaVital papTandaVital = (PapTandaVital) resultUpdate.get("papTandaVital");
assertEquals("Ya",papTandaVital.getKesadaran().getName());*/
}
@Test
@Transactional
public void testFindByNoCmAndTglInput() {
// Map<String,Object> result = papTandaVitalService.findByNoCmAndTglInput("000001", DateUtil.toDate("2013-06-07 12:10:56"));
// Boolean dataFound=new Boolean((boolean) result.get("dataFound"));
// assertTrue(dataFound);
}
@Test
@Transactional
public void testFindRegistrasiPelayananPasienByNoCmAndTglRegistrasi() {
// Map<String,Object> result = papTandaVitalService.findRegistrasiPelayananPasienByNoCmAndTglRegistrasi("000000000000005",(short) 0, DateUtil.toDate("2016-07-17 04:26:00"));
// Boolean dataFound=new Boolean((boolean) result.get("dataFound"));
// assertTrue(dataFound);
}
@Test
@Transactional
public void testFindPasienByNoCm() {
// Map<String,Object> result = papTandaVitalService.findPasienByNoCm("000000000000005");
// Boolean dataFound=new Boolean((boolean) result.get("dataFound"));
// assertTrue(dataFound);
}
@Test
@Transactional
public void testPopulateModel(){
// /*Cek Pasien Dao*/
// Pasien pasien = pasienDao.findOne(544);
// assertNotNull(pasien);
// assertEquals("Reynaldi Ramadhani Pratama",pasien.getNamaPasien());
//
// /*Cek Pasien Converter*/
// PasienVO pasienVO = pasienConverter.transferModelToVO(pasien,new PasienVO());
// assertNotNull(pasienVO);
// assertEquals("Reynaldi Ramadhani Pratama",pasienVO.getNamaPasien());
//
// /*Cek VO*/
// PapTandaVitalVO vo = populateModel();
// //assertEquals("Reynaldi Ramadhani Pratama", vo.getPasien().getNamaPasien());
// assertEquals("Tidak", vo.getKesadaran().getName());
// assertEquals(generateDate(), vo.getTglInput());
}
private PapTandaVitalVO populateModel(){
PapTandaVitalVO vo = new PapTandaVitalVO();
// Pasien pasien = pasienDao.findOne(544);
// PasienVO pasienVO = pasienConverter.transferModelToVO(pasien,new PasienVO());
// StatusYaTidakVO statusYaTidakVO = new StatusYaTidakVO();
// statusYaTidakVO.setId(1);
// statusYaTidakVO.setName("Tidak");
//
// //vo.setPasien(pasienVO);
// vo.setKesadaran(statusYaTidakVO);
// vo.setTglInput(generateDate());
return vo;
}
private Date generateDate(){
SimpleDateFormat formatter = new SimpleDateFormat("EEEE, MMM dd, yyyy HH:mm:ss a");
String dateInString = "Friday, Jun 7, 2013 12:10:56 PM";
Date date = null;
try {
date = formatter.parse(dateInString);
} catch (ParseException e) {
e.printStackTrace();
}
return date;
}
}

View File

@ -1,42 +1,22 @@
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
xmlns:p="http://www.springframework.org/schema/p" xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:jpa="http://www.springframework.org/schema/data/jpa" xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd
http://www.springframework.org/schema/data/jpa http://www.springframework.org/schema/data/jpa/spring-jpa.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd">
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd">
<!-- <context:property-placeholder
location="
classpath*:jdbc.testing.properties,
classpath*:jdbc.logging.properties,
classpath*:jdbc.${spring.profiles.default}.properties" /> -->
<context:property-placeholder
location="classpath*:jdbc.${spring.profiles.default}.properties" />
<tx:annotation-driven transaction-manager="transactionManager" />
<!-- <bean id="flyway" class="org.flywaydb.core.Flyway" init-method="migrate">
<property name="baselineOnMigrate" value="true" /> <property name="locations"
value="classpath:/db/migration" /> <property name="dataSource" ref="dataSource"
/> </bean> -->
<!-- <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
primary="true" destroy-method="close" p:driverClassName="${jdbc.driver}"
p:url="${jdbc.url}" p:username="${jdbc.username}" p:password="${jdbc.password}"
p:maxWait="40000" p:validation-query="select 1" p:test-on-borrow="true" p:maxActive="80"
p:maxIdle="20" /> -->
<tx:annotation-driven />
<bean id="hikariConfig" class="com.zaxxer.hikari.HikariConfig">
<property name="poolName" value="springHikariCP" />
<property name="dataSourceClassName" value="org.postgresql.ds.PGSimpleDataSource" />
<property name="connectionTimeout" value="3000"></property> <!-- add by iwankasan -->
<property name="idleTimeout" value="90000" /> <!-- change by iwankasan -->
<property name="maximumPoolSize" value="${hikari.config.maximum.pool.size}" /> <!-- add by iwankasan -->
<property name="connectionTimeout" value="3000" />
<property name="idleTimeout" value="90000" />
<property name="maximumPoolSize" value="${hikari.config.maximum.pool.size}" />
<property name="dataSourceProperties">
<props>
<prop key="serverName">${jdbc.serverName}</prop>
@ -44,9 +24,6 @@
<prop key="user">${jdbc.username}</prop>
<prop key="password">${jdbc.password}</prop>
<prop key="portNumber">${jdbc.portNumber}</prop>
<!-- <prop key="cachePrepStmts">true</prop> <prop key="prepStmtCacheSize">250</prop>
<prop key="prepStmtCacheSqlLimit">2048</prop> <prop key="useServerPreStmts">true</prop> -->
</props>
</property>
</bean>
@ -68,10 +45,9 @@
<prop key="hibernate.format_sql">${hibernate.format_sql}</prop>
<prop key="hibernate.show_sql">${hibernate.show_sql}</prop>
<prop key="javax.persistence.validation.mode">none</prop>
<!-- Interceptor, alter by Syamsu -->
<prop key="hibernate.ejb.interceptor">com.jasamedika.medifirst2000.logging.hibernate.interceptor.HibernateInterceptor
<prop key="hibernate.ejb.interceptor">
com.jasamedika.medifirst2000.logging.hibernate.interceptor.HibernateInterceptor
</prop>
<!-- Interceptor, alter by Syamsu -->
</props>
</property>
<property name="jpaPropertyMap">
@ -85,43 +61,9 @@
<property name="entityManagerFactory" ref="entityManagerFactory" />
</bean>
<!-- DataSource object for logging purpose -->
<!-- <bean id="loggingDataSource" class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close" p:driverClassName="${jdbc.logging.driver}" p:url="${jdbc.logging.url}"
p:username="${jdbc.logging.username}" p:password="${jdbc.logging.password}"
p:maxWait="40000" p:maxActive="80" p:maxIdle="20" /> <bean id="loggingEntityManagerFactory"
primary="false" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="dataSource" ref="loggingDataSource" /> <property name="packagesToScan"
value="com.jasamedika.medifirst2000.logging" /> <property name="jpaVendorAdapter">
<bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter"
/> </property> <property name="jpaProperties"> <props> <prop key="hibernate.hbm2ddl.auto">none</prop>
<prop key="hibernate.format_sql">false</prop> <prop key="hibernate.show_sql">false</prop>
<prop key="hibernate.dialect">${jdbc.logging.hibernate.dialect}</prop> </props>
</property> </bean> <bean id="loggingTransactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory" ref="loggingEntityManagerFactory" />
</bean> -->
<bean id="persistenceExceptionTranslationPostProcessor"
class="org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor" />
<!-- <jpa:repositories base-package="com.jasamedika.medifirst2000.dao" repository-impl-postfix="CustomImpl"
/> <context:component-scan base-package="com.jasamedika.medifirst2000.service"
/> -->
<!-- Hibernate Statistics Monitoring -->
<!-- Publishing session factory to be able view statistics -->
<!-- <bean id="sessionFactory" factory-bean="entityManagerFactory" factory-method="getSessionFactory"
/> <bean id="hibernateStatisticsMBean" class="org.hibernate.jmx.StatisticsService">
<property name="sessionFactory" ref="sessionFactory" /> </bean> <bean id="mbeanExporter"
class="org.springframework.jmx.export.MBeanExporter"> <property name="beans">
<map> <entry key="SpringBeans:name=hibernateStatisticsMBean" value-ref="hibernateStatisticsMBean"
/> </map> </property> </bean> <context:mbean-server /> -->
<!-- <context:component-scan base-package="com.jasamedika.medifirst2000"
/> -->
<bean id="messageSource"
class="org.springframework.context.support.ResourceBundleMessageSource">
<property name="basenames">
@ -130,11 +72,4 @@
</list>
</property>
</bean>
<!-- enable aop -->
<!-- <aop:aspectj-autoproxy /> <bean id="loggingAdvise" class="com.jasamedika.medifirst2000.logging.LoggingAdvise"
/> -->
<!-- For Bean Spring Security -->
<!-- <bean id="springSecurityFilterChain" class="org.springframework.web.filter.DelegatingFilterProxy"/> -->
</beans>

View File

@ -1,12 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
<component name="AdditionalModuleElements">
<content url="file://$MODULE_DIR$" dumb="true">
<sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/test/resources" type="java-test-resource" />
<excludeFolder url="file://$MODULE_DIR$/target" />
</content>
</component>
</module>

View File

@ -1,29 +0,0 @@
package com.jasamedika.medifirst2000.util;
import static org.junit.Assert.assertEquals;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import org.junit.Test;
/**
* The Class AgeCalculatorTest.
*
* @author Roberto
*/
public class AgeCalculatorTest {
//@Test
public void testGetAge() throws ParseException {
// SimpleDateFormat sdf = new SimpleDateFormat("dd-M-yyyy hh:mm:ss");
// String dateInString = "11-05-1989 10:20:56";
SimpleDateFormat sdf = new SimpleDateFormat("dd-M-yyyy");
String dateInString = "11-05-1989";
Date birthDate = sdf.parse(dateInString);
assertEquals(AgeCalculator.calculateAge(birthDate).getDays(), 0);
assertEquals(AgeCalculator.calculateAge(birthDate).getMonths(), 0);
assertEquals(AgeCalculator.calculateAge(birthDate).getYears(), 27);
}
}

View File

@ -1,22 +0,0 @@
package com.jasamedika.medifirst2000.util;
import static org.junit.Assert.assertFalse;
import org.junit.Test;
/**
* The Class DateUtilTest.
*
* @author Roberto
*/
public class CommonUtilTest {
@Test
public void testCheckEquality() {
String object1 = "harkit";
String object2 = "Harkit";
assertFalse(CommonUtil.checkEquality(object1, object2));
}
}

View File

@ -1,29 +0,0 @@
package com.jasamedika.medifirst2000.util;
import org.junit.Test;
import static org.junit.Assert.*;
/**
* The Class CurrencyUtilTest.
*
* @author Roberto
*/
public class CurrencyUtilTest {
@Test
public void testGetPriceInINA() {
double input = 10000000;
assertNotNull(CurrencyUtil.getPriceInINA(input));
assertEquals(CurrencyUtil.getPriceInINA(input), "Rp. 10.000.000,00");
}
@Test
public void testGetPriceInUSD() {
double input = 100.25;
assertNotNull(CurrencyUtil.getPriceInUSD(input));
assertEquals(CurrencyUtil.getPriceInUSD(input), "$100.25");
}
}

View File

@ -1,62 +0,0 @@
package com.jasamedika.medifirst2000.util;
import static org.junit.Assert.assertEquals;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import org.junit.Test;
/**
* The Class DateUtilTest.
*
* @author Roberto
*/
public class DateUtilTest {
// @Test
// public void testGetAge() throws ParseException {
// SimpleDateFormat sdf = new SimpleDateFormat("dd-M-yyyy hh:mm:ss");
// String dateInString = "30-06-1976 10:20:56";
// Date birthDate = sdf.parse(dateInString);
// int result = DateUtil.getAge(birthDate);
// assertEquals(result, 40);
// }
// @Test
// public void testGetMonthOf2Date() throws ParseException {
// SimpleDateFormat sdf = new SimpleDateFormat("dd-M-yyyy hh:mm:ss");
// String dateInString1 = "30-06-2016 10:20:56";
// Date date1 = sdf.parse(dateInString1);
// String dateInString2 = "30-05-2016 10:20:56";
// Date date2 = sdf.parse(dateInString2);
// int result = DateUtil.getMonthOf2Date(date1, date2);
// assertEquals(result, 1);
// }
// @Test
// public void testFromExcelDateToDate() throws Exception {
// String date = "06-2016";
//
// SimpleDateFormat formatter = new SimpleDateFormat("MM-yyyy");
// assertEquals(date, formatter.format(DateUtil.fromExcelDateToDate(date)));
// }
// @Test
// public void testGetFirstDate() throws Exception {
// SimpleDateFormat formatter = new SimpleDateFormat("dd-MM-yyyy");
// System.out.println(DateUtil.getFirstLastDateOfMonth(new Date(), true));
// System.out.println(DateUtil.getFirstLastDateOfMonth(new Date(), false));
// assertEquals("01-03-2017", formatter.format(DateUtil.getFirstLastDateOfMonth(new Date(), true)));
// }
// @Test
// public void testGetLastDate() throws Exception {
// SimpleDateFormat formatter = new SimpleDateFormat("dd-MM-yyyy");
// System.out.println(DateUtil.getFirstLastDateOfMonth(new Date(), true));
// System.out.println(DateUtil.getFirstLastDateOfMonth(new Date(), false));
// assertEquals("31-03-2017", formatter.format(DateUtil.getFirstLastDateOfMonth(new Date(), false)));
// }
}

View File

@ -1,20 +0,0 @@
package com.jasamedika.medifirst2000.util;
import static org.junit.Assert.assertEquals;
import org.junit.Test;
/**
* The Class DateUtilTest.
*
* @author Roberto
*/
public class IndonesiaNumberToWordsTest {
@Test
public void testConvert() {
long input = 92803;
String result = IndonesianNumberToWords.convert(input);
assertEquals(result, "sembilan puluh dua ribu delapan ratus tiga");
}
}

View File

@ -1,39 +0,0 @@
package com.jasamedika.medifirst2000.util;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.security.NoSuchAlgorithmException;
import org.junit.Test;
/**
* The Class PasswordUtilTest.
*
* @author Roberto
*/
public class PasswordUtilTest {
@Test
public void testGeneratePassword() throws NoSuchAlgorithmException,
UnsupportedEncodingException {
PasswordUtil passwordUtil = new PasswordUtil();
String password = "admin";
String encryptedPassword = passwordUtil.encryptPassword(password);
System.out.println("encryptedPassword (" + password + ") = "
+ encryptedPassword);
assertNotNull(encryptedPassword);
}
@Test
public void testPasswordEquals() throws
IOException {
PasswordUtil passwordUtil = new PasswordUtil();
String password = "admin";
String hashPassword = "9NEWRrb+A0sJ+41H+acQEy7rdY8=$GCZZyCy+Cs4=";
assertTrue(passwordUtil.isPasswordEqual(password, hashPassword));
}
}

View File

@ -1,30 +0,0 @@
package com.jasamedika.medifirst2000.util;
import static org.junit.Assert.assertTrue;
import java.text.ParseException;
import org.junit.Test;
/**
* The Class RegexUtilTest.
*
* @author Roberto
*/
public class RegexUtilTest {
@Test
public void testValidateIndonesiaPhoneNumber() throws ParseException {
assertTrue(StringUtil.validateIndonesiaPhoneNumber("082112345678"));
assertTrue(StringUtil.validateIndonesiaPhoneNumber("0821 1234567"));
assertTrue(StringUtil.validateIndonesiaPhoneNumber("021 1234567"));
}
@Test
public void testValidateExampleNoRegistration() throws ParseException {
assertTrue(StringUtil.validateNoRegistrationExample("REG000001"));
assertTrue(StringUtil.validateNoRegistrationExample("REG000021"));
assertTrue(StringUtil.validateNoRegistrationExample("REG123456"));
}
}

View File

@ -1,24 +0,0 @@
package com.jasamedika.medifirst2000.util;
import static org.junit.Assert.assertEquals;
import java.text.ParseException;
import org.junit.Test;
/**
* The Class AgeCalculatorTest.
*
* @author Roberto
*/
public class StringUtilTest {
@Test
public void testNumberFormat() throws ParseException {
assertEquals(StringUtil.formatNumber("10", 4), "0010");
assertEquals(StringUtil.formatNumber("6", 2), "06");
assertEquals(StringUtil.formatNumber("16", 5), "00016");
}
}

View File

@ -106,7 +106,6 @@
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>${commons-io.version}</version>
<scope>runtime</scope>
</dependency>
<!-- For testing REST -->

View File

@ -1,70 +1,49 @@
package com.jasamedika.medifirst2000.interceptor;
import java.lang.reflect.Method;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.jasamedika.medifirst2000.constants.Constants;
import com.jasamedika.medifirst2000.dao.LoginUserDao;
import com.jasamedika.medifirst2000.dao.RuanganDao;
import com.jasamedika.medifirst2000.entities.*;
import com.jasamedika.medifirst2000.notification.MessagePublisher;
import com.jasamedika.medifirst2000.security.model.AppPermission;
import com.jasamedika.medifirst2000.security.service.TokenAuthenticationService;
import com.jasamedika.medifirst2000.service.*;
import com.jasamedika.medifirst2000.util.CommonUtil;
import com.jasamedika.medifirst2000.vo.NotifMessagingSchedulerVO;
import com.jasamedika.medifirst2000.vo.NotifMessagingVO;
import com.jasamedika.medifirst2000.vo.NotifikasiMessageObjekModulVO;
import com.jasamedika.medifirst2000.vo.ObjekModulAplikasiVO;
import org.apache.commons.lang3.ArrayUtils;
import org.json.JSONArray;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.core.Authentication;
import org.springframework.web.method.HandlerMethod;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
import com.jasamedika.medifirst2000.constants.Constants;
import com.jasamedika.medifirst2000.dao.LoginUserDao;
import com.jasamedika.medifirst2000.dao.NotifikasiMessageObjekModulDao;
import com.jasamedika.medifirst2000.dao.RuanganDao;
import com.jasamedika.medifirst2000.entities.KelompokUser;
import com.jasamedika.medifirst2000.entities.LoginUser;
import com.jasamedika.medifirst2000.entities.MapObjekModulToKelompokUser;
import com.jasamedika.medifirst2000.entities.MapObjekModulToLoginUser;
import com.jasamedika.medifirst2000.entities.Pegawai;
import com.jasamedika.medifirst2000.entities.Ruangan;
import com.jasamedika.medifirst2000.notification.MessagePublisher;
import com.jasamedika.medifirst2000.notification.MessageSubscriber;
import com.jasamedika.medifirst2000.security.model.AppPermission;
import com.jasamedika.medifirst2000.security.service.TokenAuthenticationService;
import com.jasamedika.medifirst2000.service.MapObjekModulToKelompokUserService;
import com.jasamedika.medifirst2000.service.MapObjekModulToLoginUserService;
import com.jasamedika.medifirst2000.service.NotifMessagingSchedulerService;
import com.jasamedika.medifirst2000.service.NotifMessagingService;
import com.jasamedika.medifirst2000.service.NotifikasiMessageObjekModulService;
import com.jasamedika.medifirst2000.service.ObjekModulAplikasiService;
import com.jasamedika.medifirst2000.util.CommonUtil;
import com.jasamedika.medifirst2000.util.DateUtil;
import com.jasamedika.medifirst2000.vo.NotifMessagingSchedulerVO;
import com.jasamedika.medifirst2000.vo.NotifMessagingVO;
import com.jasamedika.medifirst2000.vo.NotifikasiMessageObjekModulVO;
import com.jasamedika.medifirst2000.vo.ObjekModulAplikasiVO;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.lang.reflect.Method;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
/**
* Interceptor class for All annotation method controller @AppPermission
*
* @author Roberto
*
* direka ulang oleh Syamsu
* @author Roberto, direka ulang oleh Syamsu
*/
public class AppInterceptor implements HandlerInterceptor {
private static final String[] PRINT_PATTERN = {"/lap_", "/lap-", "/lap", "/cetak_", "/cetak-", "/print_", "/print-" };
private static final String[] ADD_PATTERN = {"/save_", "/save-", "/add_", "/add-", "/simpan_", "/simpan-"};
private static final String[] UPDATE_PATTERN = {"/update_", "/update-", "/edit_", "/edit-", "/ubah_", "/ubah-"};
private static final String[] PRINT_PATTERN = { "/lap_", "/lap-", "/lap", "/cetak_", "/cetak-", "/print_",
"/print-" };
private static final String[] DELETE_PATTERN = {"/delete_", "/delete-", "/hapus_", "/hapus-"};
private static final String[] ADD_PATTERN = { "/save_", "/save-", "/add_", "/add-", "/simpan_", "/simpan-" };
private final Logger LOG = LoggerFactory.getLogger(AppInterceptor.class);
private static final String[] UPDATE_PATTERN = { "/update_", "/update-", "/edit_", "/edit-", "/ubah_", "/ubah-" };
private static final String[] DELETE_PATTERN = { "/delete_", "/delete-", "/hapus_", "/hapus-" };
@Autowired
private TokenAuthenticationService tokenAuthenticationService;
@ -74,101 +53,55 @@ public class AppInterceptor implements HandlerInterceptor {
@Autowired
private MapObjekModulToKelompokUserService mapObjekModulToKelompokUserService;
@Autowired
private MapObjekModulToLoginUserService mapObjekModulToLoginUserService;
@Autowired
private ObjekModulAplikasiService<ObjekModulAplikasiVO> objekModulAplikasiService;
@Autowired
MessagePublisher<String, Object> messagePublisher;
@Autowired
MessageSubscriber messageSubscriber;
@Autowired
NotifMessagingService<NotifMessagingVO> notifMessagingService;
@Autowired
NotifikasiMessageObjekModulService<NotifikasiMessageObjekModulVO> notifikasiMessageObjekModulService;
@Autowired
NotifMessagingSchedulerService<NotifMessagingSchedulerVO> notifMessagingSchedulerService;
@Autowired
NotifikasiMessageObjekModulDao notifikasiModulMessageDao;
@Autowired
RuanganDao ruanganDao;
List<LoginUser> loginUser;
String namaUser;
// private int headerActionToAction(String action){
// if ("save".equals(action)){
// return AppPermission.ADD;
// } else if ("edit".equals(action)){
// return AppPermission.UPDATE;
// } else if ("delete".equals(action)){
// return AppPermission.DELETE;
// } else if ("print".equals(action)){
// return AppPermission.PRINT;
// } else {
// return AppPermission.VIEW;
// }
// }
private boolean contains(String source, String[] matchers){
if (CommonUtil.isNullOrEmpty(source) || ArrayUtils.isEmpty(matchers)){
private boolean contains(String source, String[] matchers) {
if (CommonUtil.isNullOrEmpty(source) || ArrayUtils.isEmpty(matchers))
return false;
}
for (int i=0;i<matchers.length; i++){
if (source.contains(matchers[i])){
for (String matcher : matchers)
if (source.contains(matcher))
return true;
}
}
return false;
}
private String filterUrlForm(String urlForm){
private String filterUrlForm(String urlForm) {
String[] hasil = urlForm.split("/");
System.out.println(hasil.length);
StringBuilder potongan = new StringBuilder();
for (int i=0; i<hasil.length && i<3; i++){
for (int i = 0; i < hasil.length && i < 3; i++)
potongan.append(hasil[i]).append("/");
}
// String current = urlForm;
// int pos = 0;
// int cpos = -1;
// for (int i=0; i<4; i++){
// pos = current.indexOf('/',pos+1);
// if (pos > 0){
// cpos = pos;
// }else{
// break;
// }
// }
// String oye = urlForm.substring(0, cpos);
return potongan.toString();
}
private boolean checkAuthSecure(HttpServletRequest request, HttpServletResponse response, String AlamatUrlForm, boolean supervisi) throws Exception {
private boolean checkAuthSecure(HttpServletRequest request, HttpServletResponse response, String AlamatUrlForm,
boolean supervisi) throws Exception {
Authentication authentication = tokenAuthenticationService.getAuthentication(request);
namaUser = authentication.getName();
loginUser = loginUserDao.findByNamaUser(namaUser);
if (CommonUtil.isNullOrEmpty(loginUser)) {
LOG.info("Empty login user");
response.setHeader("RequireSupervisor", "false");
response.setHeader(Constants.MessageInfo.ERROR_MESSAGE, "Empty login user");
response.setStatus(HttpServletResponse.SC_FORBIDDEN);
@ -176,132 +109,92 @@ public class AppInterceptor implements HandlerInterceptor {
}
return true;
}
private int checkUserPermision(LoginUser user, ObjekModulAplikasiVO objekModulAplikasiVO, int action){
private int checkUserPermision(LoginUser user, ObjekModulAplikasiVO objekModulAplikasiVO, int action) {
int result = -1;
MapObjekModulToLoginUser modul = mapObjekModulToLoginUserService.findByObjekModulAplikasi(objekModulAplikasiVO.getId(), user.getId());
MapObjekModulToLoginUser modul = mapObjekModulToLoginUserService
.findByObjekModulAplikasi(objekModulAplikasiVO.getId(), user.getId());
if (modul != null) {
LOG.info("Module security match");
result = 0;
switch (action) {
case AppPermission.ADD:
if (modul.getSimpan()){
result = 1;
}
break;
case AppPermission.UPDATE:
if (modul.getEdit()){
result = 1;
}
break;
case AppPermission.DELETE:
if (modul.getHapus()){
result = 1;
}
break;
case AppPermission.PRINT:
if (modul.getCetak()){
result = 1;
}
break;
case AppPermission.ADD:
if (modul.getSimpan())
result = 1;
break;
case AppPermission.UPDATE:
if (modul.getEdit())
result = 1;
break;
case AppPermission.DELETE:
if (modul.getHapus())
result = 1;
break;
case AppPermission.PRINT:
if (modul.getCetak())
result = 1;
break;
}
}
return result;
}
private int checkKelompokUserPermision(LoginUser user, ObjekModulAplikasiVO objekModulAplikasiVO, int action){
private int checkKelompokUserPermision(LoginUser user, ObjekModulAplikasiVO objekModulAplikasiVO, int action) {
KelompokUser role = user.getKelompokUser();
int result = -2;
if (role != null) {
MapObjekModulToKelompokUser modul = mapObjekModulToKelompokUserService.findByObjekModulAplikasi(objekModulAplikasiVO.getId(), role.getId());
MapObjekModulToKelompokUser modul = mapObjekModulToKelompokUserService
.findByObjekModulAplikasi(objekModulAplikasiVO.getId(), role.getId());
result = -1;
if (modul != null) {
LOG.info("Module security match");
result = 0;
switch (action) {
case AppPermission.ADD:
if (modul.getSimpan()){
result = 1;
}
break;
case AppPermission.UPDATE:
if (modul.getEdit()){
result = 1;
}
break;
case AppPermission.DELETE:
if (modul.getHapus()){
result = 1;
}
break;
case AppPermission.PRINT:
if (modul.getCetak()){
result = 1;
}
break;
case AppPermission.ADD:
if (modul.getSimpan())
result = 1;
break;
case AppPermission.UPDATE:
if (modul.getEdit())
result = 1;
break;
case AppPermission.DELETE:
if (modul.getHapus())
result = 1;
break;
case AppPermission.PRINT:
if (modul.getCetak())
result = 1;
break;
}
}
}
return result;
}
private boolean checkPermission(HttpServletRequest request, HttpServletResponse response, String AlamatUrlForm, int action) throws Exception {
// Alter modified Syamsu
List<ObjekModulAplikasiVO> objekModulAplikasi = objekModulAplikasiService.findByAlamatUrlForm(filterUrlForm(AlamatUrlForm));
if (CommonUtil.isNullOrEmpty(objekModulAplikasi)){
LOG.warn(AlamatUrlForm + " : Sementara defaultnya diloloskan semuanya di AppInterceptor jika tidak ada di dalam daftar objek modul aplikasi..");
return true; // Defaultnya diloloskan semuanya...
}
if (!checkAuthSecure(request, response, AlamatUrlForm, false)) {
private boolean checkPermission(HttpServletRequest request, HttpServletResponse response, String AlamatUrlForm,
int action) throws Exception {
List<ObjekModulAplikasiVO> objekModulAplikasi = objekModulAplikasiService
.findByAlamatUrlForm(filterUrlForm(AlamatUrlForm));
if (CommonUtil.isNullOrEmpty(objekModulAplikasi))
return true;
if (!checkAuthSecure(request, response, AlamatUrlForm, false))
return false;
}
int resultUser = checkUserPermision(loginUser.get(0), objekModulAplikasi.get(0), action);
if (resultUser == 0){
LOG.info("User {} has need superVisor for action in {} module application", namaUser, action);
if (resultUser == 0) {
response.setHeader("RequireSupervisor", "true");
response.setHeader(Constants.MessageInfo.ERROR_MESSAGE, "Action requires supervisor");
response.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
return false;
} else if (resultUser == 1){
} else if (resultUser == 1) {
response.setHeader(Constants.MessageInfo.INFO_MESSAGE, "Supervise execution success");
response.setStatus(HttpServletResponse.SC_OK);
return true;
}
}
int resultKelompokUser = checkKelompokUserPermision(loginUser.get(0), objekModulAplikasi.get(0), action);
if (resultKelompokUser == -2){
LOG.warn("Sementara defaultnya diloloskan semuanya di AppInterceptor jika tidak ada di dalam daftar kelompok user..");
return true; // Defaultnya diloloskan semuanya...
// LOG.info("User {} has no role to gain access restricted area", namaUser);
// response.setHeader("RequireSupervisor", "false");
// response.setHeader(Constants.MessageInfo.ERROR_MESSAGE,
// "User " + namaUser + " has no role to gain access restricted area");
// response.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
// return false;
} else if (resultKelompokUser == -1){
LOG.warn("Sementara defaultnya diloloskan semuanya di AppInterceptor jika tidak ada di dalam daftar Map objek modul to kelompok user..");
return true; // Defaultnya diloloskan semuanya...
// LOG.info("User {} has no access to module application", namaUser);
// response.setHeader("RequireSupervisor", "false");
// response.setHeader(Constants.MessageInfo.ERROR_MESSAGE,
// "User " + namaUser + " has no access to module application");
// response.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
// return false;
} else if (resultKelompokUser == 0) {
LOG.info("User {} has need superVisor for action in {} module application", namaUser, action);
if (resultKelompokUser == -2) {
return true;
} else if (resultKelompokUser == -1) {
return true;
} else if (resultKelompokUser == 0) {
response.setHeader("RequireSupervisor", "true");
response.setHeader(Constants.MessageInfo.ERROR_MESSAGE, "Action requires supervisor");
response.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
@ -310,113 +203,54 @@ public class AppInterceptor implements HandlerInterceptor {
response.setHeader(Constants.MessageInfo.INFO_MESSAGE, "Supervise execution success");
response.setStatus(HttpServletResponse.SC_OK);
return true;
}
}
}
/*
* return true untuk valid permission request ke controller method
*/
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
////// Syamsu /////
// TUTUP DULU PENGGUNAANNYA...
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) {
HandlerMethod hm;
Method method = null;
// int methodApp = AppPermission.VIEW;
Method method;
response.setHeader("Access-Control-Expose-Headers", "RequireSupervisor" + ","
+ Constants.MessageInfo.ERROR_MESSAGE + "," + Constants.MessageInfo.INFO_MESSAGE);
////// Syamsu /////
String AlamatUrlForm = request.getHeader(Constants.HttpHeader.URL_FORM) == null ? "": request.getHeader(Constants.HttpHeader.URL_FORM);
// Buat Om, Kang, Aa Reza terkait Security Role
//String KdRuangan = null;
String KdRuangan = request.getHeader(Constants.HttpHeader.KD_RUANGAN) == null ? "": request.getHeader(Constants.HttpHeader.KD_RUANGAN);
String AlamatUrlForm = request.getHeader(Constants.HttpHeader.URL_FORM) == null ? ""
: request.getHeader(Constants.HttpHeader.URL_FORM);
String KdRuangan = request.getHeader(Constants.HttpHeader.KD_RUANGAN) == null ? ""
: request.getHeader(Constants.HttpHeader.KD_RUANGAN);
int action = AppPermission.VIEW;
if (CommonUtil.isNullOrEmpty(AlamatUrlForm)){
//LOG.warn("Sementara defaultnya di loloskan semuanya di AppInterceptor jika tidak ada header 'AlamatUrlForm' ..");
return true; // Lewatin dulu sementara;
}
if (CommonUtil.isNullOrEmpty(KdRuangan) || "0".equals(KdRuangan)){
LOG.warn("Sementara defaultnya diloloskan semuanya di AppInterceptor jika tidak ada header 'KdRuangan' atau header 'KdRuangan'nya 0 ..");
return true; // Lewatin dulu sementara;
}
//String headerAction = request.getHeader(Constants.HttpHeader.ACTION) == null ? "" : request.getHeader(Constants.HttpHeader.ACTION);
if (CommonUtil.isNullOrEmpty(AlamatUrlForm))
return true;
if (CommonUtil.isNullOrEmpty(KdRuangan) || "0".equals(KdRuangan))
return true;
String URI = request.getRequestURI();
String methodHttp = request.getMethod();
try {
// Alter modified Syamsu
if (handler instanceof org.springframework.web.method.HandlerMethod) {
hm = (HandlerMethod) handler;
method = hm.getMethod();
} else {
return checkAuthSecure(request, response, AlamatUrlForm, true);
}
// AlamatUrlForm // Alter modified Syamsu
boolean usingAnno = method != null && method.isAnnotationPresent(AppPermission.class);
boolean postM = "POST".equals(methodHttp);
boolean signInOut = !URI.contains("auth/sign-in") && !URI.contains("auth/sign-out");
boolean getM = "GET".equals(methodHttp);
boolean cetak = contains (URI, PRINT_PATTERN);
/*(URI.contains("/lap_") || URI.contains("/lap-") || URI.contains("/lap")
|| URI.contains("/cetak_") || URI.contains("/print_") || URI.contains("/cetak-")
|| URI.contains("/print-"));*/
boolean simpan = contains (URI, ADD_PATTERN);
/*(URI.contains("/save_") || URI.contains("/add_") || URI.contains("/simpan_")
|| URI.contains("/save-") || URI.contains("/add-") || URI.contains("/simpan-"));*/
boolean ubah = contains (URI, UPDATE_PATTERN);
/*(URI.contains("/update_") || URI.contains("/edit_") || URI.contains("/ubah_")
|| URI.contains("/update-") || URI.contains("/edit-") || URI.contains("/ubah-"));*/
boolean hapus = contains (URI, DELETE_PATTERN);
/*(URI.contains("/delete_") || URI.contains("/hapus_") || URI.contains("/delete-")
|| URI.contains("/hapus-")); */
boolean cetak = contains(URI, PRINT_PATTERN);
boolean simpan = contains(URI, ADD_PATTERN);
boolean ubah = contains(URI, UPDATE_PATTERN);
boolean hapus = contains(URI, DELETE_PATTERN);
if (usingAnno) {
if (method.getAnnotation(AppPermission.class) != null) {
if (method.getAnnotation(AppPermission.class) != null)
action = method.getAnnotation(AppPermission.class).value();
}
if (AppPermission.SPECIALS == action /* && "#/home".equals(AlamatUrlForm) */) {
if (AppPermission.SPECIALS == action)
return true;
}
}
if (getM && cetak) {
action = AppPermission.PRINT;
// if (headerAction != null && !"".equals(headerAction)) {
// action = headerActionToAction(headerAction);
// }
if (method.getAnnotation(AppPermission.class) != null) {
if (method != null && method.getAnnotation(AppPermission.class) != null)
action = method.getAnnotation(AppPermission.class).value();
}
return checkPermission(request, response, AlamatUrlForm, action);
}
if ((usingAnno || postM) && signInOut) {
if (simpan) {
action = AppPermission.ADD;
} else if (ubah) {
@ -426,345 +260,104 @@ public class AppInterceptor implements HandlerInterceptor {
} else if (cetak) {
action = AppPermission.PRINT;
}
// if (headerAction != null && !"".equals(headerAction)) {
// action = headerActionToAction(headerAction);
// }
if (method.getAnnotation(AppPermission.class) != null) {
if (method != null && method.getAnnotation(AppPermission.class) != null)
action = method.getAnnotation(AppPermission.class).value();
}
return checkPermission(request, response, AlamatUrlForm, action);
}
} catch (Exception e) {
e.printStackTrace();
System.out.println("Not Found " + request.getRequestURL());
LOG.info("Error accured unauthorized");
response.setHeader(Constants.MessageInfo.ERROR_MESSAGE, "Something wrong happened");
response.setHeader("RequireSupervisor", "false");
response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
return false;
}
// TUTUP DULU PENGGUNAANNYA...
return true;
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object obj, ModelAndView mav) throws Exception {}
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object obj, ModelAndView mav) {
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object obj, Exception ex) throws Exception {
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object obj, Exception ex)
throws Exception {
String AlamatUrlForm = request.getHeader(Constants.HttpHeader.URL_FORM) == null ? ""
: request.getHeader(Constants.HttpHeader.URL_FORM);
String KdRuangan = request.getHeader(Constants.HttpHeader.KD_RUANGAN) == null ? ""
: request.getHeader(Constants.HttpHeader.KD_RUANGAN);
String idRuanganTujuan = request.getHeader(Constants.HttpHeader.KD_RUANGAN_T) == null ? ""
: request.getHeader(Constants.HttpHeader.KD_RUANGAN_T);
String idRuanganTujuanA = request.getHeader(Constants.HttpHeader.KD_RUANGAN_A) == null ? ""
: request.getHeader(Constants.HttpHeader.KD_RUANGAN_A);
String tglKirim = request.getHeader(Constants.HttpHeader.TGL_KIRIM) == null ? ""
: request.getHeader(Constants.HttpHeader.TGL_KIRIM);
boolean notHttpOK = response.getStatus() >= HttpServletResponse.SC_BAD_REQUEST;
boolean notLewatMenu = CommonUtil.isNullOrEmpty(AlamatUrlForm) || CommonUtil.isNullOrEmpty(KdRuangan);
Integer ruanganAsalId = 0;
try {
ruanganAsalId = Integer.parseInt(KdRuangan);
}catch(Exception e){
ex = e;
}
Integer ruanganAsalId = Integer.parseInt(KdRuangan);
boolean adaError = CommonUtil.isNotNullOrEmpty(ex);
if (notHttpOK || notLewatMenu || adaError){
if (notHttpOK || notLewatMenu || adaError)
return;
}
Authentication authentication = tokenAuthenticationService.getAuthentication(request);
if (CommonUtil.isNullOrEmpty(authentication)){
if (CommonUtil.isNullOrEmpty(authentication))
return;
}
namaUser = authentication.getName();
loginUser = loginUserDao.findByNamaUser(namaUser);
if (CommonUtil.isNullOrEmpty(loginUser)) {
if (CommonUtil.isNullOrEmpty(loginUser))
return;
}
String potongan = filterUrlForm(AlamatUrlForm);
List<ObjekModulAplikasiVO> objekModulAplikasiVOs = objekModulAplikasiService.findByAlamatUrlForm(potongan);
if (CommonUtil.isNullOrEmpty(objekModulAplikasiVOs)){
if (CommonUtil.isNullOrEmpty(objekModulAplikasiVOs))
return;
}
String URI = request.getRequestURI();
Integer objekModulAplikasId = objekModulAplikasiVOs.get(0).getId();
List<NotifMessagingVO> notifMessagingVOs = notifMessagingService.findByObjekModulAplikasiIdAndUrlBackEndOrUrlBackEndIsNull(objekModulAplikasId, URI);
if (CommonUtil.isNullOrEmpty(notifMessagingVOs)) {
List<NotifMessagingVO> notifMessagingVOs = notifMessagingService
.findByObjekModulAplikasiIdAndUrlBackEndOrUrlBackEndIsNull(objekModulAplikasId, URI);
if (CommonUtil.isNullOrEmpty(notifMessagingVOs))
return;
}
Integer notifMessagingId = notifMessagingVOs.get(0).getId();
if (CommonUtil.isNullOrEmpty(tglKirim)) {
List<Integer> ruanganTujuansId = new ArrayList<>();
System.out.println("--");
if (!"".equals(idRuanganTujuan)){
if (!"".equals(idRuanganTujuan)) {
JSONArray ruanganTujuanIds = new JSONArray(idRuanganTujuan);
for (int i=0; i<ruanganTujuanIds.length(); i++){
for (int i = 0; i < ruanganTujuanIds.length(); i++) {
Integer ruanganTujuanId = ruanganTujuanIds.optInt(i, 0);
ruanganTujuansId.add(ruanganTujuanId);
}
}
}
if (!"".equals(idRuanganTujuanA) && ruanganTujuansId.isEmpty()) {
JSONArray ruanganTujuanIds = new JSONArray(idRuanganTujuanA);
for (int i=0; i<ruanganTujuanIds.length(); i++){
for (int i = 0; i < ruanganTujuanIds.length(); i++) {
Integer ruanganTujuanId = ruanganTujuanIds.optInt(i, 0);
ruanganTujuansId.add(ruanganTujuanId);
}
}
MessagePublisher.RabbitHole rabbitHole = messagePublisher.getRabbitHole();
Pegawai pegawai = loginUser.get(0).getPegawai();
Ruangan ruanganAsal = ruanganDao.findById(ruanganAsalId);
if (ruanganTujuansId.size() > 0){
try{
rabbitHole.sendNotif(rabbitHole, ruanganAsal, pegawai, notifikasiMessageObjekModulService, notifMessagingId, ruanganTujuansId);
}catch(Exception e){
e.printStackTrace();
LOG.info(DateUtil.now()+" send notif dari Ruangan {} dengan ruanganId {} pada notifMessageId {} ada masalah {}",
ruanganAsal.getNamaRuangan(), ruanganAsalId, notifMessagingId, e.getMessage());
}
}
if (!ruanganTujuansId.isEmpty())
rabbitHole.sendNotif(rabbitHole, ruanganAsal, pegawai, notifikasiMessageObjekModulService,
notifMessagingId, ruanganTujuansId);
} else {
JSONArray tglKirims = new JSONArray(tglKirim);
JSONArray ruanganTujuanIds = new JSONArray(idRuanganTujuan);
SimpleDateFormat myFormat = new SimpleDateFormat("yyyy-MM-dd");
for (int i=0; i<tglKirims.length(); i++){
for (int i = 0; i < tglKirims.length(); i++) {
String ctglKirim = tglKirims.optString(i, "");
Integer cRuanganTujuanId = ruanganTujuanIds.optInt(i,0);
Integer cRuanganTujuanId = ruanganTujuanIds.optInt(i, 0);
Date date = myFormat.parse(ctglKirim);
NotifMessagingSchedulerVO vo = new NotifMessagingSchedulerVO();
vo.setTglKirim(date);
vo.setTerkirim(false);
vo.setNotifMessagingId(notifMessagingId);
vo.setRuanganIdAsal(ruanganAsalId);
vo.setRuanganIdTujuan(cRuanganTujuanId);
vo.setPegawaiId(loginUser.get(0).getPegawai().getId());
vo.setKdProfile((short)0);
vo.setKdProfile((short) 0);
vo.setKodeExternal("");
vo.setNamaExternal("");
vo.setReportDisplay("");
vo.setStatusEnabled(true);
notifMessagingSchedulerService.add(vo);
}
}
}
// <T extends BaseMasterVO> T convertToVO(T t, Object o){
// BeanUtils.copyProperties(t, o);
// return t;
// }
// try{
//
//
// String AlamatUrlForm =
// request.getHeader(Constants.HttpHeader.URL_FORM) == null ? "" :
// request.getHeader(Constants.HttpHeader.URL_FORM);
// String KdRuangan = request.getHeader(Constants.HttpHeader.KD_RUANGAN)
// == null ? "" : request.getHeader(Constants.HttpHeader.KD_RUANGAN);
//
// Authentication authentication =
// tokenAuthenticationService.getAuthentication(request);
//
// namaUser = authentication.getName();
// loginUser = loginUserDao.findByNamaUser(namaUser);
//
//
// if (loginUser.isEmpty()) {
// publisher.BroadcastMessage(KdRuangan, namaUser, AlamatUrlForm);
// }
//
//
//
//
//// String routingKeyAndQueueName = "ruanganId." + KdRuangan;
////
//// publisher.sendRabbitMQNotification("127.0.0.1", "ruanganId." +
// KdRuangan, "Kd Ruangan : " + KdRuangan + ", AlamatUrlForm : " +
// AlamatUrlForm);
////
//// subscriber.startRabbitMQNotification("127.0.0.1",
// routingKeyAndQueueName);
//// subscriber.listenRabbitMQNotification(routingKeyAndQueueName,
// subscriber.getDefaultConsumer(), false);
//// subscriber.stopRabbitMQNotification();
//
// }catch(Exception e){
// //e.printStackTrace();
// }
// //String urlSocket = messagePublisher.GetSettingDataFixed("UrlRabbitMQMessaging"); sementara kunci dulu.
//
// String urlSocket = "127.0.0.1";
//
// List<NotifikasiMessageObjekModulVO> notifikasiMessageObjekModulVOs = notifikasiMessageObjekModulService.findByNotifMessagingIdAndRuanganId(notifMessagingId, ruanganTujuansId);
//
// if (CommonUtil.isNullOrEmpty(notifikasiMessageObjekModulVOs)) {
// return;
// }
//
// Integer ruanganIdtemp = 0;
// boolean connect = false;
//
// for (NotifikasiMessageObjekModulVO vo : notifikasiMessageObjekModulVOs){
// Ruangan ruangan = vo.getRuangan();
// ModulAplikasi modulAplikasi = vo.getModulAplikasi();
// ObjekModulAplikasi objekModulAplikasi = vo.getObjekModulAplikasi();
// String customURLObjekModul = vo.getCustomURLObjekModul();
// String titleNotifikasi = vo.getTitleNotifikasi();
// String pesanNotifikasi = vo.getPesanNotifikasi();
// String namaFungsiFrontEnd = vo.getNamaFungsiFrontEnd();
//
// if (ruangan.getId() == ruanganId){
// continue;
// }
//
// RuanganVO dariRuangan = ruanganService.findById(ruanganId);
//
// if (ruanganIdtemp != ruangan.getId()){
// if (connect){
// rabbitHole.close();
// }
// rabbitHole.connect(urlSocket, String.valueOf(ruangan.getId()));
// connect = true;
// ruanganIdtemp = ruangan.getId();
// }
//
// Map<String, Object> map = new HashMap<>();
// map.put("title", titleNotifikasi);
// map.put("dariRuangan", dariRuangan);
// map.put("ruanganId", ruangan.getId());
// map.put("ruangan", convertToVO(new RuanganVO(), ruangan));
// map.put("modulAplikasi", convertToVO(new ModulAplikasiVO(), modulAplikasi));
// map.put("objekModulAplikasi", convertToVO(new ObjekModulAplikasiVO(), objekModulAplikasi));
// map.put("titleNotifikasi", titleNotifikasi);
// map.put("pesanNotifikasi", pesanNotifikasi);
// map.put("namaFungsiFrontEnd", namaFungsiFrontEnd);
// map.put("fromPegawai", loginUser.get(0).getPegawai());
// map.put("urlForm",CommonUtil.isNullOrEmpty(customURLObjekModul)? objekModulAplikasi.getAlamatUrlForm() : customURLObjekModul);
//
// rabbitHole.sendRabbitMQNotification(gson.toJson(map));
//
// //messagePublisher.BroadcastMessage(map);
// }
// if (connect){
// rabbitHole.close();
// }
// private static final TypeAdapterFactory FACTORY = new TypeAdapterFactory() {
// @Override
// @SuppressWarnings("unchecked")
// public <T> TypeAdapter<T> create(Gson gson, TypeToken<T> type) {
// return (HibernateProxy.class.isAssignableFrom(type.getRawType())
// ? (TypeAdapter<T>) new HibernateProxyTypeAdapter((TypeAdapter)gson.getAdapter(TypeToken.get(type.getRawType().getSuperclass())))
// : null);
// }
// };
//
//
// private static final class HibernateProxyTypeAdapter extends TypeAdapter<HibernateProxy> {
//
// private final TypeAdapter<Object> delegate;
//
// private HibernateProxyTypeAdapter(TypeAdapter<Object> delegate) {
// this.delegate = delegate;
// }
//
// @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;
// }
//
//
//
// delegate.write(out, ((HibernateProxy) value).getHibernateLazyInitializer().getImplementation());
// }
// }
}
/*
* else if (method.isAnnotationPresent(AppMenuPermision.class)){
*
* Authentication authentication =
* tokenAuthenticationService.getAuthentication(request);
*
* String namaUser = authentication.getName();
*
* List<LoginUser> loginUser =
* loginUserDao.findByNamaUser(namaUser);
*
* if (loginUser.isEmpty()) { // untuk testing false
* response.addHeader("Access-Control-Expose-Headers",
* "content-type");
* response.setHeader(Constants.MessageInfo.ERROR_MESSAGE, "User " +
* namaUser + " can not access current menu ");
* response.setStatus(HttpServletResponse.SC_UNAUTHORIZED); return
* false; }
*
* // get user login if (!loginUser.isEmpty()) { LoginUser user =
* loginUser.get(0); }else{ LOG.info("User {} is unauthorized",
* namaUser);
* response.setHeader(Constants.MessageInfo.ERROR_MESSAGE,
* "User is unauthorized");
* response.setStatus(HttpServletResponse.SC_UNAUTHORIZED); return
* false; } }
*/

View File

@ -0,0 +1,35 @@
package com.jasamedika.medifirst2000.entities;
import com.jasamedika.medifirst2000.base.BaseActive;
import com.jasamedika.medifirst2000.helper.Caption;
import lombok.Getter;
import lombok.Setter;
import org.hibernate.validator.constraints.NotBlank;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
import java.io.Serializable;
/**
* @author Salman
* @version 1.0.0
* @since 31/01/2024
*/
@Getter
@Setter
@Entity
@Table(name = "jenis_log_m")
public class JenisLog extends BaseActive implements Serializable {
private static final long serialVersionUID = -5796583173860610757L;
@Id
@Column(name = "id", columnDefinition = "bigserial")
protected Long id;
@Column(nullable = false)
@NotBlank
@Caption("Jenis Log")
private String jenisLog;
}

View File

@ -1,125 +1,55 @@
package com.jasamedika.medifirst2000.entities;
import java.util.Date;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.validation.constraints.NotNull;
import org.hibernate.annotations.GenericGenerator;
import com.jasamedika.medifirst2000.base.BaseMaster;
import com.jasamedika.medifirst2000.helper.Caption;
import lombok.Getter;
import lombok.Setter;
import javax.persistence.*;
import java.util.Date;
import static javax.persistence.FetchType.LAZY;
import static javax.persistence.GenerationType.SEQUENCE;
@Getter
@Setter
@Entity
@Table(name = "logginguser_t")
public class UserLogging extends BaseMaster {
private static final long serialVersionUID = -5155757628971170710L;
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "public.logginguser_t_id_seq")
@javax.persistence.SequenceGenerator(name = "public.logginguser_t_id_seq", sequenceName = "public.logginguser_t_id_seq", allocationSize = 1)
@GeneratedValue(strategy = SEQUENCE, generator = "public.logginguser_t_id_seq")
@SequenceGenerator(name = "public.logginguser_t_id_seq", sequenceName = "public.logginguser_t_id_seq", allocationSize = 1)
@Column(name = "id")
protected Integer id;
@Column(name = "tanggal", nullable = true)
@Column(name = "tanggal")
@Temporal(TemporalType.TIMESTAMP)
@Caption(value = "Tanggal")
private Date tanggal;
@ManyToOne
@ManyToOne(fetch = LAZY)
@JoinColumn(name = "objectloginuserfk")
@Caption(value = "User Login")
private LoginUser loginUser;
@Column(name = "objectloginuserfk", insertable = false, updatable = false, nullable = true)
@Column(name = "objectloginuserfk", insertable = false, updatable = false)
private Integer loginUserId;
@Column(name = "jenislog", nullable = true, length = 500)
@Column(name = "jenislog", length = 500)
@Caption(value = "Jenis Log")
private String jenisLog;
@Column(name = "noreff", nullable = true, columnDefinition = "CHAR(32)")
@Column(name = "noreff", columnDefinition = "CHAR(32)")
@Caption(value = "No Referensi")
private String noReff;
@Column(name = "referensi", nullable = true, length = 100)
@Column(name = "referensi", length = 100)
@Caption(value = "Referensi")
private String referensi;
@Column(name = "keterangan", nullable = true, length = 200)
@Column(name = "keterangan", length = 200)
@Caption(value = "Keterangan")
private String keterangan;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public Date getTanggal() {
return tanggal;
}
public void setTanggal(Date tanggal) {
this.tanggal = tanggal;
}
public LoginUser getLoginUser() {
return loginUser;
}
public void setLoginUser(LoginUser loginUser) {
this.loginUser = loginUser;
}
public Integer getLoginUserId() {
return loginUserId;
}
public void setLoginUserId(Integer loginUserId) {
this.loginUserId = loginUserId;
}
public String getJenisLog() {
return jenisLog;
}
public void setJenisLog(String jenisLog) {
this.jenisLog = jenisLog;
}
public String getNoReff() {
return noReff;
}
public void setNoReff(String noReff) {
this.noReff = noReff;
}
public String getReferensi() {
return referensi;
}
public void setReferensi(String referensi) {
this.referensi = referensi;
}
public String getKeterangan() {
return keterangan;
}
public void setKeterangan(String keterangan) {
this.keterangan = keterangan;
}
}

View File

@ -0,0 +1,21 @@
package com.jasamedika.medifirst2000.vo;
import com.jasamedika.medifirst2000.helper.Caption;
import lombok.Getter;
import lombok.Setter;
import org.hibernate.validator.constraints.NotBlank;
/**
* @author Salman
* @version 1.0.0
* @since 31/01/2024
*/
@Getter
@Setter
public class JenisLogVO {
protected Long id;
@NotBlank
@Caption("Jenis Log")
private String jenisLog;
}

View File

@ -106,7 +106,6 @@
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>${commons-io.version}</version>
<scope>runtime</scope>
</dependency>
<!-- For testing REST -->

View File

@ -1,70 +1,49 @@
package com.jasamedika.medifirst2000.interceptor;
import java.lang.reflect.Method;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.jasamedika.medifirst2000.constants.Constants;
import com.jasamedika.medifirst2000.dao.LoginUserDao;
import com.jasamedika.medifirst2000.dao.RuanganDao;
import com.jasamedika.medifirst2000.entities.*;
import com.jasamedika.medifirst2000.notification.MessagePublisher;
import com.jasamedika.medifirst2000.security.model.AppPermission;
import com.jasamedika.medifirst2000.security.service.TokenAuthenticationService;
import com.jasamedika.medifirst2000.service.*;
import com.jasamedika.medifirst2000.util.CommonUtil;
import com.jasamedika.medifirst2000.vo.NotifMessagingSchedulerVO;
import com.jasamedika.medifirst2000.vo.NotifMessagingVO;
import com.jasamedika.medifirst2000.vo.NotifikasiMessageObjekModulVO;
import com.jasamedika.medifirst2000.vo.ObjekModulAplikasiVO;
import org.apache.commons.lang3.ArrayUtils;
import org.json.JSONArray;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.core.Authentication;
import org.springframework.web.method.HandlerMethod;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
import com.jasamedika.medifirst2000.constants.Constants;
import com.jasamedika.medifirst2000.dao.LoginUserDao;
import com.jasamedika.medifirst2000.dao.NotifikasiMessageObjekModulDao;
import com.jasamedika.medifirst2000.dao.RuanganDao;
import com.jasamedika.medifirst2000.entities.KelompokUser;
import com.jasamedika.medifirst2000.entities.LoginUser;
import com.jasamedika.medifirst2000.entities.MapObjekModulToKelompokUser;
import com.jasamedika.medifirst2000.entities.MapObjekModulToLoginUser;
import com.jasamedika.medifirst2000.entities.Pegawai;
import com.jasamedika.medifirst2000.entities.Ruangan;
import com.jasamedika.medifirst2000.notification.MessagePublisher;
import com.jasamedika.medifirst2000.notification.MessageSubscriber;
import com.jasamedika.medifirst2000.security.model.AppPermission;
import com.jasamedika.medifirst2000.security.service.TokenAuthenticationService;
import com.jasamedika.medifirst2000.service.MapObjekModulToKelompokUserService;
import com.jasamedika.medifirst2000.service.MapObjekModulToLoginUserService;
import com.jasamedika.medifirst2000.service.NotifMessagingSchedulerService;
import com.jasamedika.medifirst2000.service.NotifMessagingService;
import com.jasamedika.medifirst2000.service.NotifikasiMessageObjekModulService;
import com.jasamedika.medifirst2000.service.ObjekModulAplikasiService;
import com.jasamedika.medifirst2000.util.CommonUtil;
import com.jasamedika.medifirst2000.util.DateUtil;
import com.jasamedika.medifirst2000.vo.NotifMessagingSchedulerVO;
import com.jasamedika.medifirst2000.vo.NotifMessagingVO;
import com.jasamedika.medifirst2000.vo.NotifikasiMessageObjekModulVO;
import com.jasamedika.medifirst2000.vo.ObjekModulAplikasiVO;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.lang.reflect.Method;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
/**
* Interceptor class for All annotation method controller @AppPermission
*
* @author Roberto
*
* direka ulang oleh Syamsu
* @author Roberto, direka ulang oleh Syamsu
*/
public class AppInterceptor implements HandlerInterceptor {
private static final String[] PRINT_PATTERN = {"/lap_", "/lap-", "/lap", "/cetak_", "/cetak-", "/print_", "/print-" };
private static final String[] ADD_PATTERN = {"/save_", "/save-", "/add_", "/add-", "/simpan_", "/simpan-"};
private static final String[] UPDATE_PATTERN = {"/update_", "/update-", "/edit_", "/edit-", "/ubah_", "/ubah-"};
private static final String[] PRINT_PATTERN = { "/lap_", "/lap-", "/lap", "/cetak_", "/cetak-", "/print_",
"/print-" };
private static final String[] DELETE_PATTERN = {"/delete_", "/delete-", "/hapus_", "/hapus-"};
private static final String[] ADD_PATTERN = { "/save_", "/save-", "/add_", "/add-", "/simpan_", "/simpan-" };
private final Logger LOG = LoggerFactory.getLogger(AppInterceptor.class);
private static final String[] UPDATE_PATTERN = { "/update_", "/update-", "/edit_", "/edit-", "/ubah_", "/ubah-" };
private static final String[] DELETE_PATTERN = { "/delete_", "/delete-", "/hapus_", "/hapus-" };
@Autowired
private TokenAuthenticationService tokenAuthenticationService;
@ -74,101 +53,55 @@ public class AppInterceptor implements HandlerInterceptor {
@Autowired
private MapObjekModulToKelompokUserService mapObjekModulToKelompokUserService;
@Autowired
private MapObjekModulToLoginUserService mapObjekModulToLoginUserService;
@Autowired
private ObjekModulAplikasiService<ObjekModulAplikasiVO> objekModulAplikasiService;
@Autowired
MessagePublisher<String, Object> messagePublisher;
@Autowired
MessageSubscriber messageSubscriber;
@Autowired
NotifMessagingService<NotifMessagingVO> notifMessagingService;
@Autowired
NotifikasiMessageObjekModulService<NotifikasiMessageObjekModulVO> notifikasiMessageObjekModulService;
@Autowired
NotifMessagingSchedulerService<NotifMessagingSchedulerVO> notifMessagingSchedulerService;
@Autowired
NotifikasiMessageObjekModulDao notifikasiModulMessageDao;
@Autowired
RuanganDao ruanganDao;
List<LoginUser> loginUser;
String namaUser;
// private int headerActionToAction(String action){
// if ("save".equals(action)){
// return AppPermission.ADD;
// } else if ("edit".equals(action)){
// return AppPermission.UPDATE;
// } else if ("delete".equals(action)){
// return AppPermission.DELETE;
// } else if ("print".equals(action)){
// return AppPermission.PRINT;
// } else {
// return AppPermission.VIEW;
// }
// }
private boolean contains(String source, String[] matchers){
if (CommonUtil.isNullOrEmpty(source) || ArrayUtils.isEmpty(matchers)){
private boolean contains(String source, String[] matchers) {
if (CommonUtil.isNullOrEmpty(source) || ArrayUtils.isEmpty(matchers))
return false;
}
for (int i=0;i<matchers.length; i++){
if (source.contains(matchers[i])){
for (String matcher : matchers)
if (source.contains(matcher))
return true;
}
}
return false;
}
private String filterUrlForm(String urlForm){
private String filterUrlForm(String urlForm) {
String[] hasil = urlForm.split("/");
System.out.println(hasil.length);
StringBuilder potongan = new StringBuilder();
for (int i=0; i<hasil.length && i<3; i++){
for (int i = 0; i < hasil.length && i < 3; i++)
potongan.append(hasil[i]).append("/");
}
// String current = urlForm;
// int pos = 0;
// int cpos = -1;
// for (int i=0; i<4; i++){
// pos = current.indexOf('/',pos+1);
// if (pos > 0){
// cpos = pos;
// }else{
// break;
// }
// }
// String oye = urlForm.substring(0, cpos);
return potongan.toString();
}
private boolean checkAuthSecure(HttpServletRequest request, HttpServletResponse response, String AlamatUrlForm, boolean supervisi) throws Exception {
private boolean checkAuthSecure(HttpServletRequest request, HttpServletResponse response, String AlamatUrlForm,
boolean supervisi) throws Exception {
Authentication authentication = tokenAuthenticationService.getAuthentication(request);
namaUser = authentication.getName();
loginUser = loginUserDao.findByNamaUser(namaUser);
if (CommonUtil.isNullOrEmpty(loginUser)) {
LOG.info("Empty login user");
response.setHeader("RequireSupervisor", "false");
response.setHeader(Constants.MessageInfo.ERROR_MESSAGE, "Empty login user");
response.setStatus(HttpServletResponse.SC_FORBIDDEN);
@ -176,132 +109,92 @@ public class AppInterceptor implements HandlerInterceptor {
}
return true;
}
private int checkUserPermision(LoginUser user, ObjekModulAplikasiVO objekModulAplikasiVO, int action){
private int checkUserPermision(LoginUser user, ObjekModulAplikasiVO objekModulAplikasiVO, int action) {
int result = -1;
MapObjekModulToLoginUser modul = mapObjekModulToLoginUserService.findByObjekModulAplikasi(objekModulAplikasiVO.getId(), user.getId());
MapObjekModulToLoginUser modul = mapObjekModulToLoginUserService
.findByObjekModulAplikasi(objekModulAplikasiVO.getId(), user.getId());
if (modul != null) {
LOG.info("Module security match");
result = 0;
switch (action) {
case AppPermission.ADD:
if (modul.getSimpan()){
result = 1;
}
break;
case AppPermission.UPDATE:
if (modul.getEdit()){
result = 1;
}
break;
case AppPermission.DELETE:
if (modul.getHapus()){
result = 1;
}
break;
case AppPermission.PRINT:
if (modul.getCetak()){
result = 1;
}
break;
case AppPermission.ADD:
if (modul.getSimpan())
result = 1;
break;
case AppPermission.UPDATE:
if (modul.getEdit())
result = 1;
break;
case AppPermission.DELETE:
if (modul.getHapus())
result = 1;
break;
case AppPermission.PRINT:
if (modul.getCetak())
result = 1;
break;
}
}
return result;
}
private int checkKelompokUserPermision(LoginUser user, ObjekModulAplikasiVO objekModulAplikasiVO, int action){
private int checkKelompokUserPermision(LoginUser user, ObjekModulAplikasiVO objekModulAplikasiVO, int action) {
KelompokUser role = user.getKelompokUser();
int result = -2;
if (role != null) {
MapObjekModulToKelompokUser modul = mapObjekModulToKelompokUserService.findByObjekModulAplikasi(objekModulAplikasiVO.getId(), role.getId());
MapObjekModulToKelompokUser modul = mapObjekModulToKelompokUserService
.findByObjekModulAplikasi(objekModulAplikasiVO.getId(), role.getId());
result = -1;
if (modul != null) {
LOG.info("Module security match");
result = 0;
switch (action) {
case AppPermission.ADD:
if (modul.getSimpan()){
result = 1;
}
break;
case AppPermission.UPDATE:
if (modul.getEdit()){
result = 1;
}
break;
case AppPermission.DELETE:
if (modul.getHapus()){
result = 1;
}
break;
case AppPermission.PRINT:
if (modul.getCetak()){
result = 1;
}
break;
case AppPermission.ADD:
if (modul.getSimpan())
result = 1;
break;
case AppPermission.UPDATE:
if (modul.getEdit())
result = 1;
break;
case AppPermission.DELETE:
if (modul.getHapus())
result = 1;
break;
case AppPermission.PRINT:
if (modul.getCetak())
result = 1;
break;
}
}
}
return result;
}
private boolean checkPermission(HttpServletRequest request, HttpServletResponse response, String AlamatUrlForm, int action) throws Exception {
// Alter modified Syamsu
List<ObjekModulAplikasiVO> objekModulAplikasi = objekModulAplikasiService.findByAlamatUrlForm(filterUrlForm(AlamatUrlForm));
if (CommonUtil.isNullOrEmpty(objekModulAplikasi)){
LOG.warn(AlamatUrlForm + " : Sementara defaultnya diloloskan semuanya di AppInterceptor jika tidak ada di dalam daftar objek modul aplikasi..");
return true; // Defaultnya diloloskan semuanya...
}
if (!checkAuthSecure(request, response, AlamatUrlForm, false)) {
private boolean checkPermission(HttpServletRequest request, HttpServletResponse response, String AlamatUrlForm,
int action) throws Exception {
List<ObjekModulAplikasiVO> objekModulAplikasi = objekModulAplikasiService
.findByAlamatUrlForm(filterUrlForm(AlamatUrlForm));
if (CommonUtil.isNullOrEmpty(objekModulAplikasi))
return true;
if (!checkAuthSecure(request, response, AlamatUrlForm, false))
return false;
}
int resultUser = checkUserPermision(loginUser.get(0), objekModulAplikasi.get(0), action);
if (resultUser == 0){
LOG.info("User {} has need superVisor for action in {} module application", namaUser, action);
if (resultUser == 0) {
response.setHeader("RequireSupervisor", "true");
response.setHeader(Constants.MessageInfo.ERROR_MESSAGE, "Action requires supervisor");
response.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
return false;
} else if (resultUser == 1){
} else if (resultUser == 1) {
response.setHeader(Constants.MessageInfo.INFO_MESSAGE, "Supervise execution success");
response.setStatus(HttpServletResponse.SC_OK);
return true;
}
}
int resultKelompokUser = checkKelompokUserPermision(loginUser.get(0), objekModulAplikasi.get(0), action);
if (resultKelompokUser == -2){
LOG.warn("Sementara defaultnya diloloskan semuanya di AppInterceptor jika tidak ada di dalam daftar kelompok user..");
return true; // Defaultnya diloloskan semuanya...
// LOG.info("User {} has no role to gain access restricted area", namaUser);
// response.setHeader("RequireSupervisor", "false");
// response.setHeader(Constants.MessageInfo.ERROR_MESSAGE,
// "User " + namaUser + " has no role to gain access restricted area");
// response.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
// return false;
} else if (resultKelompokUser == -1){
LOG.warn("Sementara defaultnya diloloskan semuanya di AppInterceptor jika tidak ada di dalam daftar Map objek modul to kelompok user..");
return true; // Defaultnya diloloskan semuanya...
// LOG.info("User {} has no access to module application", namaUser);
// response.setHeader("RequireSupervisor", "false");
// response.setHeader(Constants.MessageInfo.ERROR_MESSAGE,
// "User " + namaUser + " has no access to module application");
// response.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
// return false;
} else if (resultKelompokUser == 0) {
LOG.info("User {} has need superVisor for action in {} module application", namaUser, action);
if (resultKelompokUser == -2) {
return true;
} else if (resultKelompokUser == -1) {
return true;
} else if (resultKelompokUser == 0) {
response.setHeader("RequireSupervisor", "true");
response.setHeader(Constants.MessageInfo.ERROR_MESSAGE, "Action requires supervisor");
response.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
@ -310,113 +203,54 @@ public class AppInterceptor implements HandlerInterceptor {
response.setHeader(Constants.MessageInfo.INFO_MESSAGE, "Supervise execution success");
response.setStatus(HttpServletResponse.SC_OK);
return true;
}
}
}
/*
* return true untuk valid permission request ke controller method
*/
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
////// Syamsu /////
// TUTUP DULU PENGGUNAANNYA...
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) {
HandlerMethod hm;
Method method = null;
// int methodApp = AppPermission.VIEW;
Method method;
response.setHeader("Access-Control-Expose-Headers", "RequireSupervisor" + ","
+ Constants.MessageInfo.ERROR_MESSAGE + "," + Constants.MessageInfo.INFO_MESSAGE);
////// Syamsu /////
String AlamatUrlForm = request.getHeader(Constants.HttpHeader.URL_FORM) == null ? "": request.getHeader(Constants.HttpHeader.URL_FORM);
// Buat Om, Kang, Aa Reza terkait Security Role
//String KdRuangan = null;
String KdRuangan = request.getHeader(Constants.HttpHeader.KD_RUANGAN) == null ? "": request.getHeader(Constants.HttpHeader.KD_RUANGAN);
String AlamatUrlForm = request.getHeader(Constants.HttpHeader.URL_FORM) == null ? ""
: request.getHeader(Constants.HttpHeader.URL_FORM);
String KdRuangan = request.getHeader(Constants.HttpHeader.KD_RUANGAN) == null ? ""
: request.getHeader(Constants.HttpHeader.KD_RUANGAN);
int action = AppPermission.VIEW;
if (CommonUtil.isNullOrEmpty(AlamatUrlForm)){
//LOG.warn("Sementara defaultnya di loloskan semuanya di AppInterceptor jika tidak ada header 'AlamatUrlForm' ..");
return true; // Lewatin dulu sementara;
}
if (CommonUtil.isNullOrEmpty(KdRuangan) || "0".equals(KdRuangan)){
LOG.warn("Sementara defaultnya diloloskan semuanya di AppInterceptor jika tidak ada header 'KdRuangan' atau header 'KdRuangan'nya 0 ..");
return true; // Lewatin dulu sementara;
}
//String headerAction = request.getHeader(Constants.HttpHeader.ACTION) == null ? "" : request.getHeader(Constants.HttpHeader.ACTION);
if (CommonUtil.isNullOrEmpty(AlamatUrlForm))
return true;
if (CommonUtil.isNullOrEmpty(KdRuangan) || "0".equals(KdRuangan))
return true;
String URI = request.getRequestURI();
String methodHttp = request.getMethod();
try {
// Alter modified Syamsu
if (handler instanceof org.springframework.web.method.HandlerMethod) {
hm = (HandlerMethod) handler;
method = hm.getMethod();
} else {
return checkAuthSecure(request, response, AlamatUrlForm, true);
}
// AlamatUrlForm // Alter modified Syamsu
boolean usingAnno = method != null && method.isAnnotationPresent(AppPermission.class);
boolean postM = "POST".equals(methodHttp);
boolean signInOut = !URI.contains("auth/sign-in") && !URI.contains("auth/sign-out");
boolean getM = "GET".equals(methodHttp);
boolean cetak = contains (URI, PRINT_PATTERN);
/*(URI.contains("/lap_") || URI.contains("/lap-") || URI.contains("/lap")
|| URI.contains("/cetak_") || URI.contains("/print_") || URI.contains("/cetak-")
|| URI.contains("/print-"));*/
boolean simpan = contains (URI, ADD_PATTERN);
/*(URI.contains("/save_") || URI.contains("/add_") || URI.contains("/simpan_")
|| URI.contains("/save-") || URI.contains("/add-") || URI.contains("/simpan-"));*/
boolean ubah = contains (URI, UPDATE_PATTERN);
/*(URI.contains("/update_") || URI.contains("/edit_") || URI.contains("/ubah_")
|| URI.contains("/update-") || URI.contains("/edit-") || URI.contains("/ubah-"));*/
boolean hapus = contains (URI, DELETE_PATTERN);
/*(URI.contains("/delete_") || URI.contains("/hapus_") || URI.contains("/delete-")
|| URI.contains("/hapus-")); */
boolean cetak = contains(URI, PRINT_PATTERN);
boolean simpan = contains(URI, ADD_PATTERN);
boolean ubah = contains(URI, UPDATE_PATTERN);
boolean hapus = contains(URI, DELETE_PATTERN);
if (usingAnno) {
if (method.getAnnotation(AppPermission.class) != null) {
if (method.getAnnotation(AppPermission.class) != null)
action = method.getAnnotation(AppPermission.class).value();
}
if (AppPermission.SPECIALS == action /* && "#/home".equals(AlamatUrlForm) */) {
if (AppPermission.SPECIALS == action)
return true;
}
}
if (getM && cetak) {
action = AppPermission.PRINT;
// if (headerAction != null && !"".equals(headerAction)) {
// action = headerActionToAction(headerAction);
// }
if (method.getAnnotation(AppPermission.class) != null) {
if (method != null && method.getAnnotation(AppPermission.class) != null)
action = method.getAnnotation(AppPermission.class).value();
}
return checkPermission(request, response, AlamatUrlForm, action);
}
if ((usingAnno || postM) && signInOut) {
if (simpan) {
action = AppPermission.ADD;
} else if (ubah) {
@ -426,345 +260,105 @@ public class AppInterceptor implements HandlerInterceptor {
} else if (cetak) {
action = AppPermission.PRINT;
}
// if (headerAction != null && !"".equals(headerAction)) {
// action = headerActionToAction(headerAction);
// }
if (method.getAnnotation(AppPermission.class) != null) {
if (method != null && method.getAnnotation(AppPermission.class) != null)
action = method.getAnnotation(AppPermission.class).value();
}
return checkPermission(request, response, AlamatUrlForm, action);
}
} catch (Exception e) {
e.printStackTrace();
System.out.println("Not Found " + request.getRequestURL());
LOG.info("Error accured unauthorized");
response.setHeader(Constants.MessageInfo.ERROR_MESSAGE, "Something wrong happened");
response.setHeader("RequireSupervisor", "false");
response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
return false;
}
// TUTUP DULU PENGGUNAANNYA...
return true;
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object obj, ModelAndView mav) throws Exception {}
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object obj, ModelAndView mav) {
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object obj, Exception ex) throws Exception {
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object obj, Exception ex)
throws Exception {
String AlamatUrlForm = request.getHeader(Constants.HttpHeader.URL_FORM) == null ? ""
: request.getHeader(Constants.HttpHeader.URL_FORM);
String KdRuangan = request.getHeader(Constants.HttpHeader.KD_RUANGAN) == null ? ""
: request.getHeader(Constants.HttpHeader.KD_RUANGAN);
String idRuanganTujuan = request.getHeader(Constants.HttpHeader.KD_RUANGAN_T) == null ? ""
: request.getHeader(Constants.HttpHeader.KD_RUANGAN_T);
String idRuanganTujuanA = request.getHeader(Constants.HttpHeader.KD_RUANGAN_A) == null ? ""
: request.getHeader(Constants.HttpHeader.KD_RUANGAN_A);
String tglKirim = request.getHeader(Constants.HttpHeader.TGL_KIRIM) == null ? ""
: request.getHeader(Constants.HttpHeader.TGL_KIRIM);
boolean notHttpOK = response.getStatus() >= HttpServletResponse.SC_BAD_REQUEST;
boolean notLewatMenu = CommonUtil.isNullOrEmpty(AlamatUrlForm) || CommonUtil.isNullOrEmpty(KdRuangan);
Integer ruanganAsalId = 0;
try {
ruanganAsalId = Integer.parseInt(KdRuangan);
}catch(Exception e){
ex = e;
}
Integer ruanganAsalId = Integer.parseInt(KdRuangan);
boolean adaError = CommonUtil.isNotNullOrEmpty(ex);
if (notHttpOK || notLewatMenu || adaError){
if (notHttpOK || notLewatMenu || adaError)
return;
}
Authentication authentication = tokenAuthenticationService.getAuthentication(request);
if (CommonUtil.isNullOrEmpty(authentication)){
if (CommonUtil.isNullOrEmpty(authentication))
return;
}
namaUser = authentication.getName();
loginUser = loginUserDao.findByNamaUser(namaUser);
if (CommonUtil.isNullOrEmpty(loginUser)) {
if (CommonUtil.isNullOrEmpty(loginUser))
return;
}
String potongan = filterUrlForm(AlamatUrlForm);
List<ObjekModulAplikasiVO> objekModulAplikasiVOs = objekModulAplikasiService.findByAlamatUrlForm(potongan);
if (CommonUtil.isNullOrEmpty(objekModulAplikasiVOs)){
if (CommonUtil.isNullOrEmpty(objekModulAplikasiVOs))
return;
}
String URI = request.getRequestURI();
Integer objekModulAplikasId = objekModulAplikasiVOs.get(0).getId();
List<NotifMessagingVO> notifMessagingVOs = notifMessagingService.findByObjekModulAplikasiIdAndUrlBackEndOrUrlBackEndIsNull(objekModulAplikasId, URI);
if (CommonUtil.isNullOrEmpty(notifMessagingVOs)) {
List<NotifMessagingVO> notifMessagingVOs = notifMessagingService
.findByObjekModulAplikasiIdAndUrlBackEndOrUrlBackEndIsNull(objekModulAplikasId, URI);
if (CommonUtil.isNullOrEmpty(notifMessagingVOs))
return;
}
Integer notifMessagingId = notifMessagingVOs.get(0).getId();
if (CommonUtil.isNullOrEmpty(tglKirim)) {
List<Integer> ruanganTujuansId = new ArrayList<>();
System.out.println("--");
if (!"".equals(idRuanganTujuan)){
if (!"".equals(idRuanganTujuan)) {
JSONArray ruanganTujuanIds = new JSONArray(idRuanganTujuan);
for (int i=0; i<ruanganTujuanIds.length(); i++){
for (int i = 0; i < ruanganTujuanIds.length(); i++) {
Integer ruanganTujuanId = ruanganTujuanIds.optInt(i, 0);
ruanganTujuansId.add(ruanganTujuanId);
}
}
}
if (!"".equals(idRuanganTujuanA) && ruanganTujuansId.isEmpty()) {
JSONArray ruanganTujuanIds = new JSONArray(idRuanganTujuanA);
for (int i=0; i<ruanganTujuanIds.length(); i++){
for (int i = 0; i < ruanganTujuanIds.length(); i++) {
Integer ruanganTujuanId = ruanganTujuanIds.optInt(i, 0);
ruanganTujuansId.add(ruanganTujuanId);
}
}
MessagePublisher.RabbitHole rabbitHole = messagePublisher.getRabbitHole();
Pegawai pegawai = loginUser.get(0).getPegawai();
Ruangan ruanganAsal = ruanganDao.findById(ruanganAsalId);
if (ruanganTujuansId.size() > 0){
try{
rabbitHole.sendNotif(rabbitHole, ruanganAsal, pegawai, notifikasiMessageObjekModulService, notifMessagingId, ruanganTujuansId);
}catch(Exception e){
e.printStackTrace();
LOG.info(DateUtil.now()+" send notif dari Ruangan {} dengan ruanganId {} pada notifMessageId {} ada masalah {}",
ruanganAsal.getNamaRuangan(), ruanganAsalId, notifMessagingId, e.getMessage());
}
}
if (!ruanganTujuansId.isEmpty())
rabbitHole.sendNotif(rabbitHole, ruanganAsal, pegawai, notifikasiMessageObjekModulService,
notifMessagingId, ruanganTujuansId);
} else {
JSONArray tglKirims = new JSONArray(tglKirim);
JSONArray ruanganTujuanIds = new JSONArray(idRuanganTujuan);
SimpleDateFormat myFormat = new SimpleDateFormat("yyyy-MM-dd");
for (int i=0; i<tglKirims.length(); i++){
for (int i = 0; i < tglKirims.length(); i++) {
String ctglKirim = tglKirims.optString(i, "");
Integer cRuanganTujuanId = ruanganTujuanIds.optInt(i,0);
Integer cRuanganTujuanId = ruanganTujuanIds.optInt(i, 0);
Date date = myFormat.parse(ctglKirim);
NotifMessagingSchedulerVO vo = new NotifMessagingSchedulerVO();
vo.setTglKirim(date);
vo.setTerkirim(false);
vo.setNotifMessagingId(notifMessagingId);
vo.setRuanganIdAsal(ruanganAsalId);
vo.setRuanganIdTujuan(cRuanganTujuanId);
vo.setPegawaiId(loginUser.get(0).getPegawai().getId());
vo.setKdProfile((short)0);
vo.setKdProfile((short) 0);
vo.setKodeExternal("");
vo.setNamaExternal("");
vo.setReportDisplay("");
vo.setStatusEnabled(true);
notifMessagingSchedulerService.add(vo);
}
}
}
// <T extends BaseMasterVO> T convertToVO(T t, Object o){
// BeanUtils.copyProperties(t, o);
// return t;
// }
// try{
//
//
// String AlamatUrlForm =
// request.getHeader(Constants.HttpHeader.URL_FORM) == null ? "" :
// request.getHeader(Constants.HttpHeader.URL_FORM);
// String KdRuangan = request.getHeader(Constants.HttpHeader.KD_RUANGAN)
// == null ? "" : request.getHeader(Constants.HttpHeader.KD_RUANGAN);
//
// Authentication authentication =
// tokenAuthenticationService.getAuthentication(request);
//
// namaUser = authentication.getName();
// loginUser = loginUserDao.findByNamaUser(namaUser);
//
//
// if (loginUser.isEmpty()) {
// publisher.BroadcastMessage(KdRuangan, namaUser, AlamatUrlForm);
// }
//
//
//
//
//// String routingKeyAndQueueName = "ruanganId." + KdRuangan;
////
//// publisher.sendRabbitMQNotification("127.0.0.1", "ruanganId." +
// KdRuangan, "Kd Ruangan : " + KdRuangan + ", AlamatUrlForm : " +
// AlamatUrlForm);
////
//// subscriber.startRabbitMQNotification("127.0.0.1",
// routingKeyAndQueueName);
//// subscriber.listenRabbitMQNotification(routingKeyAndQueueName,
// subscriber.getDefaultConsumer(), false);
//// subscriber.stopRabbitMQNotification();
//
// }catch(Exception e){
// //e.printStackTrace();
// }
// //String urlSocket = messagePublisher.GetSettingDataFixed("UrlRabbitMQMessaging"); sementara kunci dulu.
//
// String urlSocket = "127.0.0.1";
//
// List<NotifikasiMessageObjekModulVO> notifikasiMessageObjekModulVOs = notifikasiMessageObjekModulService.findByNotifMessagingIdAndRuanganId(notifMessagingId, ruanganTujuansId);
//
// if (CommonUtil.isNullOrEmpty(notifikasiMessageObjekModulVOs)) {
// return;
// }
//
// Integer ruanganIdtemp = 0;
// boolean connect = false;
//
// for (NotifikasiMessageObjekModulVO vo : notifikasiMessageObjekModulVOs){
// Ruangan ruangan = vo.getRuangan();
// ModulAplikasi modulAplikasi = vo.getModulAplikasi();
// ObjekModulAplikasi objekModulAplikasi = vo.getObjekModulAplikasi();
// String customURLObjekModul = vo.getCustomURLObjekModul();
// String titleNotifikasi = vo.getTitleNotifikasi();
// String pesanNotifikasi = vo.getPesanNotifikasi();
// String namaFungsiFrontEnd = vo.getNamaFungsiFrontEnd();
//
// if (ruangan.getId() == ruanganId){
// continue;
// }
//
// RuanganVO dariRuangan = ruanganService.findById(ruanganId);
//
// if (ruanganIdtemp != ruangan.getId()){
// if (connect){
// rabbitHole.close();
// }
// rabbitHole.connect(urlSocket, String.valueOf(ruangan.getId()));
// connect = true;
// ruanganIdtemp = ruangan.getId();
// }
//
// Map<String, Object> map = new HashMap<>();
// map.put("title", titleNotifikasi);
// map.put("dariRuangan", dariRuangan);
// map.put("ruanganId", ruangan.getId());
// map.put("ruangan", convertToVO(new RuanganVO(), ruangan));
// map.put("modulAplikasi", convertToVO(new ModulAplikasiVO(), modulAplikasi));
// map.put("objekModulAplikasi", convertToVO(new ObjekModulAplikasiVO(), objekModulAplikasi));
// map.put("titleNotifikasi", titleNotifikasi);
// map.put("pesanNotifikasi", pesanNotifikasi);
// map.put("namaFungsiFrontEnd", namaFungsiFrontEnd);
// map.put("fromPegawai", loginUser.get(0).getPegawai());
// map.put("urlForm",CommonUtil.isNullOrEmpty(customURLObjekModul)? objekModulAplikasi.getAlamatUrlForm() : customURLObjekModul);
//
// rabbitHole.sendRabbitMQNotification(gson.toJson(map));
//
// //messagePublisher.BroadcastMessage(map);
// }
// if (connect){
// rabbitHole.close();
// }
// private static final TypeAdapterFactory FACTORY = new TypeAdapterFactory() {
// @Override
// @SuppressWarnings("unchecked")
// public <T> TypeAdapter<T> create(Gson gson, TypeToken<T> type) {
// return (HibernateProxy.class.isAssignableFrom(type.getRawType())
// ? (TypeAdapter<T>) new HibernateProxyTypeAdapter((TypeAdapter)gson.getAdapter(TypeToken.get(type.getRawType().getSuperclass())))
// : null);
// }
// };
//
//
// private static final class HibernateProxyTypeAdapter extends TypeAdapter<HibernateProxy> {
//
// private final TypeAdapter<Object> delegate;
//
// private HibernateProxyTypeAdapter(TypeAdapter<Object> delegate) {
// this.delegate = delegate;
// }
//
// @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;
// }
//
//
//
// delegate.write(out, ((HibernateProxy) value).getHibernateLazyInitializer().getImplementation());
// }
// }
}
/*
* else if (method.isAnnotationPresent(AppMenuPermision.class)){
*
* Authentication authentication =
* tokenAuthenticationService.getAuthentication(request);
*
* String namaUser = authentication.getName();
*
* List<LoginUser> loginUser =
* loginUserDao.findByNamaUser(namaUser);
*
* if (loginUser.isEmpty()) { // untuk testing false
* response.addHeader("Access-Control-Expose-Headers",
* "content-type");
* response.setHeader(Constants.MessageInfo.ERROR_MESSAGE, "User " +
* namaUser + " can not access current menu ");
* response.setStatus(HttpServletResponse.SC_UNAUTHORIZED); return
* false; }
*
* // get user login if (!loginUser.isEmpty()) { LoginUser user =
* loginUser.get(0); }else{ LOG.info("User {} is unauthorized",
* namaUser);
* response.setHeader(Constants.MessageInfo.ERROR_MESSAGE,
* "User is unauthorized");
* response.setStatus(HttpServletResponse.SC_UNAUTHORIZED); return
* false; } }
*/

View File

@ -106,7 +106,6 @@
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>${commons-io.version}</version>
<scope>runtime</scope>
</dependency>
<!-- For testing REST -->

View File

@ -1,70 +1,49 @@
package com.jasamedika.medifirst2000.interceptor;
import java.lang.reflect.Method;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.jasamedika.medifirst2000.constants.Constants;
import com.jasamedika.medifirst2000.dao.LoginUserDao;
import com.jasamedika.medifirst2000.dao.RuanganDao;
import com.jasamedika.medifirst2000.entities.*;
import com.jasamedika.medifirst2000.notification.MessagePublisher;
import com.jasamedika.medifirst2000.security.model.AppPermission;
import com.jasamedika.medifirst2000.security.service.TokenAuthenticationService;
import com.jasamedika.medifirst2000.service.*;
import com.jasamedika.medifirst2000.util.CommonUtil;
import com.jasamedika.medifirst2000.vo.NotifMessagingSchedulerVO;
import com.jasamedika.medifirst2000.vo.NotifMessagingVO;
import com.jasamedika.medifirst2000.vo.NotifikasiMessageObjekModulVO;
import com.jasamedika.medifirst2000.vo.ObjekModulAplikasiVO;
import org.apache.commons.lang3.ArrayUtils;
import org.json.JSONArray;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.core.Authentication;
import org.springframework.web.method.HandlerMethod;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
import com.jasamedika.medifirst2000.constants.Constants;
import com.jasamedika.medifirst2000.dao.LoginUserDao;
import com.jasamedika.medifirst2000.dao.NotifikasiMessageObjekModulDao;
import com.jasamedika.medifirst2000.dao.RuanganDao;
import com.jasamedika.medifirst2000.entities.KelompokUser;
import com.jasamedika.medifirst2000.entities.LoginUser;
import com.jasamedika.medifirst2000.entities.MapObjekModulToKelompokUser;
import com.jasamedika.medifirst2000.entities.MapObjekModulToLoginUser;
import com.jasamedika.medifirst2000.entities.Pegawai;
import com.jasamedika.medifirst2000.entities.Ruangan;
import com.jasamedika.medifirst2000.notification.MessagePublisher;
import com.jasamedika.medifirst2000.notification.MessageSubscriber;
import com.jasamedika.medifirst2000.security.model.AppPermission;
import com.jasamedika.medifirst2000.security.service.TokenAuthenticationService;
import com.jasamedika.medifirst2000.service.MapObjekModulToKelompokUserService;
import com.jasamedika.medifirst2000.service.MapObjekModulToLoginUserService;
import com.jasamedika.medifirst2000.service.NotifMessagingSchedulerService;
import com.jasamedika.medifirst2000.service.NotifMessagingService;
import com.jasamedika.medifirst2000.service.NotifikasiMessageObjekModulService;
import com.jasamedika.medifirst2000.service.ObjekModulAplikasiService;
import com.jasamedika.medifirst2000.util.CommonUtil;
import com.jasamedika.medifirst2000.util.DateUtil;
import com.jasamedika.medifirst2000.vo.NotifMessagingSchedulerVO;
import com.jasamedika.medifirst2000.vo.NotifMessagingVO;
import com.jasamedika.medifirst2000.vo.NotifikasiMessageObjekModulVO;
import com.jasamedika.medifirst2000.vo.ObjekModulAplikasiVO;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.lang.reflect.Method;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
/**
* Interceptor class for All annotation method controller @AppPermission
*
* @author Roberto
*
* direka ulang oleh Syamsu
* @author Roberto, direka ulang oleh Syamsu
*/
public class AppInterceptor implements HandlerInterceptor {
private static final String[] PRINT_PATTERN = {"/lap_", "/lap-", "/lap", "/cetak_", "/cetak-", "/print_", "/print-" };
private static final String[] ADD_PATTERN = {"/save_", "/save-", "/add_", "/add-", "/simpan_", "/simpan-"};
private static final String[] UPDATE_PATTERN = {"/update_", "/update-", "/edit_", "/edit-", "/ubah_", "/ubah-"};
private static final String[] PRINT_PATTERN = { "/lap_", "/lap-", "/lap", "/cetak_", "/cetak-", "/print_",
"/print-" };
private static final String[] DELETE_PATTERN = {"/delete_", "/delete-", "/hapus_", "/hapus-"};
private static final String[] ADD_PATTERN = { "/save_", "/save-", "/add_", "/add-", "/simpan_", "/simpan-" };
private final Logger LOG = LoggerFactory.getLogger(AppInterceptor.class);
private static final String[] UPDATE_PATTERN = { "/update_", "/update-", "/edit_", "/edit-", "/ubah_", "/ubah-" };
private static final String[] DELETE_PATTERN = { "/delete_", "/delete-", "/hapus_", "/hapus-" };
@Autowired
private TokenAuthenticationService tokenAuthenticationService;
@ -74,101 +53,55 @@ public class AppInterceptor implements HandlerInterceptor {
@Autowired
private MapObjekModulToKelompokUserService mapObjekModulToKelompokUserService;
@Autowired
private MapObjekModulToLoginUserService mapObjekModulToLoginUserService;
@Autowired
private ObjekModulAplikasiService<ObjekModulAplikasiVO> objekModulAplikasiService;
@Autowired
MessagePublisher<String, Object> messagePublisher;
@Autowired
MessageSubscriber messageSubscriber;
@Autowired
NotifMessagingService<NotifMessagingVO> notifMessagingService;
@Autowired
NotifikasiMessageObjekModulService<NotifikasiMessageObjekModulVO> notifikasiMessageObjekModulService;
@Autowired
NotifMessagingSchedulerService<NotifMessagingSchedulerVO> notifMessagingSchedulerService;
@Autowired
NotifikasiMessageObjekModulDao notifikasiModulMessageDao;
@Autowired
RuanganDao ruanganDao;
List<LoginUser> loginUser;
String namaUser;
// private int headerActionToAction(String action){
// if ("save".equals(action)){
// return AppPermission.ADD;
// } else if ("edit".equals(action)){
// return AppPermission.UPDATE;
// } else if ("delete".equals(action)){
// return AppPermission.DELETE;
// } else if ("print".equals(action)){
// return AppPermission.PRINT;
// } else {
// return AppPermission.VIEW;
// }
// }
private boolean contains(String source, String[] matchers){
if (CommonUtil.isNullOrEmpty(source) || ArrayUtils.isEmpty(matchers)){
private boolean contains(String source, String[] matchers) {
if (CommonUtil.isNullOrEmpty(source) || ArrayUtils.isEmpty(matchers))
return false;
}
for (int i=0;i<matchers.length; i++){
if (source.contains(matchers[i])){
for (String matcher : matchers)
if (source.contains(matcher))
return true;
}
}
return false;
}
private String filterUrlForm(String urlForm){
private String filterUrlForm(String urlForm) {
String[] hasil = urlForm.split("/");
System.out.println(hasil.length);
StringBuilder potongan = new StringBuilder();
for (int i=0; i<hasil.length && i<3; i++){
for (int i = 0; i < hasil.length && i < 3; i++)
potongan.append(hasil[i]).append("/");
}
// String current = urlForm;
// int pos = 0;
// int cpos = -1;
// for (int i=0; i<4; i++){
// pos = current.indexOf('/',pos+1);
// if (pos > 0){
// cpos = pos;
// }else{
// break;
// }
// }
// String oye = urlForm.substring(0, cpos);
return potongan.toString();
}
private boolean checkAuthSecure(HttpServletRequest request, HttpServletResponse response, String AlamatUrlForm, boolean supervisi) throws Exception {
private boolean checkAuthSecure(HttpServletRequest request, HttpServletResponse response, String AlamatUrlForm,
boolean supervisi) throws Exception {
Authentication authentication = tokenAuthenticationService.getAuthentication(request);
namaUser = authentication.getName();
loginUser = loginUserDao.findByNamaUser(namaUser);
if (CommonUtil.isNullOrEmpty(loginUser)) {
LOG.info("Empty login user");
response.setHeader("RequireSupervisor", "false");
response.setHeader(Constants.MessageInfo.ERROR_MESSAGE, "Empty login user");
response.setStatus(HttpServletResponse.SC_FORBIDDEN);
@ -176,132 +109,92 @@ public class AppInterceptor implements HandlerInterceptor {
}
return true;
}
private int checkUserPermision(LoginUser user, ObjekModulAplikasiVO objekModulAplikasiVO, int action){
private int checkUserPermision(LoginUser user, ObjekModulAplikasiVO objekModulAplikasiVO, int action) {
int result = -1;
MapObjekModulToLoginUser modul = mapObjekModulToLoginUserService.findByObjekModulAplikasi(objekModulAplikasiVO.getId(), user.getId());
MapObjekModulToLoginUser modul = mapObjekModulToLoginUserService
.findByObjekModulAplikasi(objekModulAplikasiVO.getId(), user.getId());
if (modul != null) {
LOG.info("Module security match");
result = 0;
switch (action) {
case AppPermission.ADD:
if (modul.getSimpan()){
result = 1;
}
break;
case AppPermission.UPDATE:
if (modul.getEdit()){
result = 1;
}
break;
case AppPermission.DELETE:
if (modul.getHapus()){
result = 1;
}
break;
case AppPermission.PRINT:
if (modul.getCetak()){
result = 1;
}
break;
case AppPermission.ADD:
if (modul.getSimpan())
result = 1;
break;
case AppPermission.UPDATE:
if (modul.getEdit())
result = 1;
break;
case AppPermission.DELETE:
if (modul.getHapus())
result = 1;
break;
case AppPermission.PRINT:
if (modul.getCetak())
result = 1;
break;
}
}
return result;
}
private int checkKelompokUserPermision(LoginUser user, ObjekModulAplikasiVO objekModulAplikasiVO, int action){
private int checkKelompokUserPermision(LoginUser user, ObjekModulAplikasiVO objekModulAplikasiVO, int action) {
KelompokUser role = user.getKelompokUser();
int result = -2;
if (role != null) {
MapObjekModulToKelompokUser modul = mapObjekModulToKelompokUserService.findByObjekModulAplikasi(objekModulAplikasiVO.getId(), role.getId());
MapObjekModulToKelompokUser modul = mapObjekModulToKelompokUserService
.findByObjekModulAplikasi(objekModulAplikasiVO.getId(), role.getId());
result = -1;
if (modul != null) {
LOG.info("Module security match");
result = 0;
switch (action) {
case AppPermission.ADD:
if (modul.getSimpan()){
result = 1;
}
break;
case AppPermission.UPDATE:
if (modul.getEdit()){
result = 1;
}
break;
case AppPermission.DELETE:
if (modul.getHapus()){
result = 1;
}
break;
case AppPermission.PRINT:
if (modul.getCetak()){
result = 1;
}
break;
case AppPermission.ADD:
if (modul.getSimpan())
result = 1;
break;
case AppPermission.UPDATE:
if (modul.getEdit())
result = 1;
break;
case AppPermission.DELETE:
if (modul.getHapus())
result = 1;
break;
case AppPermission.PRINT:
if (modul.getCetak())
result = 1;
break;
}
}
}
return result;
}
private boolean checkPermission(HttpServletRequest request, HttpServletResponse response, String AlamatUrlForm, int action) throws Exception {
// Alter modified Syamsu
List<ObjekModulAplikasiVO> objekModulAplikasi = objekModulAplikasiService.findByAlamatUrlForm(filterUrlForm(AlamatUrlForm));
if (CommonUtil.isNullOrEmpty(objekModulAplikasi)){
LOG.warn(AlamatUrlForm + " : Sementara defaultnya diloloskan semuanya di AppInterceptor jika tidak ada di dalam daftar objek modul aplikasi..");
return true; // Defaultnya diloloskan semuanya...
}
if (!checkAuthSecure(request, response, AlamatUrlForm, false)) {
private boolean checkPermission(HttpServletRequest request, HttpServletResponse response, String AlamatUrlForm,
int action) throws Exception {
List<ObjekModulAplikasiVO> objekModulAplikasi = objekModulAplikasiService
.findByAlamatUrlForm(filterUrlForm(AlamatUrlForm));
if (CommonUtil.isNullOrEmpty(objekModulAplikasi))
return true;
if (!checkAuthSecure(request, response, AlamatUrlForm, false))
return false;
}
int resultUser = checkUserPermision(loginUser.get(0), objekModulAplikasi.get(0), action);
if (resultUser == 0){
LOG.info("User {} has need superVisor for action in {} module application", namaUser, action);
if (resultUser == 0) {
response.setHeader("RequireSupervisor", "true");
response.setHeader(Constants.MessageInfo.ERROR_MESSAGE, "Action requires supervisor");
response.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
return false;
} else if (resultUser == 1){
} else if (resultUser == 1) {
response.setHeader(Constants.MessageInfo.INFO_MESSAGE, "Supervise execution success");
response.setStatus(HttpServletResponse.SC_OK);
return true;
}
}
int resultKelompokUser = checkKelompokUserPermision(loginUser.get(0), objekModulAplikasi.get(0), action);
if (resultKelompokUser == -2){
LOG.warn("Sementara defaultnya diloloskan semuanya di AppInterceptor jika tidak ada di dalam daftar kelompok user..");
return true; // Defaultnya diloloskan semuanya...
// LOG.info("User {} has no role to gain access restricted area", namaUser);
// response.setHeader("RequireSupervisor", "false");
// response.setHeader(Constants.MessageInfo.ERROR_MESSAGE,
// "User " + namaUser + " has no role to gain access restricted area");
// response.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
// return false;
} else if (resultKelompokUser == -1){
LOG.warn("Sementara defaultnya diloloskan semuanya di AppInterceptor jika tidak ada di dalam daftar Map objek modul to kelompok user..");
return true; // Defaultnya diloloskan semuanya...
// LOG.info("User {} has no access to module application", namaUser);
// response.setHeader("RequireSupervisor", "false");
// response.setHeader(Constants.MessageInfo.ERROR_MESSAGE,
// "User " + namaUser + " has no access to module application");
// response.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
// return false;
} else if (resultKelompokUser == 0) {
LOG.info("User {} has need superVisor for action in {} module application", namaUser, action);
if (resultKelompokUser == -2) {
return true;
} else if (resultKelompokUser == -1) {
return true;
} else if (resultKelompokUser == 0) {
response.setHeader("RequireSupervisor", "true");
response.setHeader(Constants.MessageInfo.ERROR_MESSAGE, "Action requires supervisor");
response.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
@ -310,113 +203,54 @@ public class AppInterceptor implements HandlerInterceptor {
response.setHeader(Constants.MessageInfo.INFO_MESSAGE, "Supervise execution success");
response.setStatus(HttpServletResponse.SC_OK);
return true;
}
}
}
/*
* return true untuk valid permission request ke controller method
*/
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
////// Syamsu /////
// TUTUP DULU PENGGUNAANNYA...
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) {
HandlerMethod hm;
Method method = null;
// int methodApp = AppPermission.VIEW;
Method method;
response.setHeader("Access-Control-Expose-Headers", "RequireSupervisor" + ","
+ Constants.MessageInfo.ERROR_MESSAGE + "," + Constants.MessageInfo.INFO_MESSAGE);
////// Syamsu /////
String AlamatUrlForm = request.getHeader(Constants.HttpHeader.URL_FORM) == null ? "": request.getHeader(Constants.HttpHeader.URL_FORM);
// Buat Om, Kang, Aa Reza terkait Security Role
//String KdRuangan = null;
String KdRuangan = request.getHeader(Constants.HttpHeader.KD_RUANGAN) == null ? "": request.getHeader(Constants.HttpHeader.KD_RUANGAN);
String AlamatUrlForm = request.getHeader(Constants.HttpHeader.URL_FORM) == null ? ""
: request.getHeader(Constants.HttpHeader.URL_FORM);
String KdRuangan = request.getHeader(Constants.HttpHeader.KD_RUANGAN) == null ? ""
: request.getHeader(Constants.HttpHeader.KD_RUANGAN);
int action = AppPermission.VIEW;
if (CommonUtil.isNullOrEmpty(AlamatUrlForm)){
//LOG.warn("Sementara defaultnya di loloskan semuanya di AppInterceptor jika tidak ada header 'AlamatUrlForm' ..");
return true; // Lewatin dulu sementara;
}
if (CommonUtil.isNullOrEmpty(KdRuangan) || "0".equals(KdRuangan)){
LOG.warn("Sementara defaultnya diloloskan semuanya di AppInterceptor jika tidak ada header 'KdRuangan' atau header 'KdRuangan'nya 0 ..");
return true; // Lewatin dulu sementara;
}
//String headerAction = request.getHeader(Constants.HttpHeader.ACTION) == null ? "" : request.getHeader(Constants.HttpHeader.ACTION);
if (CommonUtil.isNullOrEmpty(AlamatUrlForm))
return true;
if (CommonUtil.isNullOrEmpty(KdRuangan) || "0".equals(KdRuangan))
return true;
String URI = request.getRequestURI();
String methodHttp = request.getMethod();
try {
// Alter modified Syamsu
if (handler instanceof org.springframework.web.method.HandlerMethod) {
hm = (HandlerMethod) handler;
method = hm.getMethod();
} else {
return checkAuthSecure(request, response, AlamatUrlForm, true);
}
// AlamatUrlForm // Alter modified Syamsu
boolean usingAnno = method != null && method.isAnnotationPresent(AppPermission.class);
boolean postM = "POST".equals(methodHttp);
boolean signInOut = !URI.contains("auth/sign-in") && !URI.contains("auth/sign-out");
boolean getM = "GET".equals(methodHttp);
boolean cetak = contains (URI, PRINT_PATTERN);
/*(URI.contains("/lap_") || URI.contains("/lap-") || URI.contains("/lap")
|| URI.contains("/cetak_") || URI.contains("/print_") || URI.contains("/cetak-")
|| URI.contains("/print-"));*/
boolean simpan = contains (URI, ADD_PATTERN);
/*(URI.contains("/save_") || URI.contains("/add_") || URI.contains("/simpan_")
|| URI.contains("/save-") || URI.contains("/add-") || URI.contains("/simpan-"));*/
boolean ubah = contains (URI, UPDATE_PATTERN);
/*(URI.contains("/update_") || URI.contains("/edit_") || URI.contains("/ubah_")
|| URI.contains("/update-") || URI.contains("/edit-") || URI.contains("/ubah-"));*/
boolean hapus = contains (URI, DELETE_PATTERN);
/*(URI.contains("/delete_") || URI.contains("/hapus_") || URI.contains("/delete-")
|| URI.contains("/hapus-")); */
boolean cetak = contains(URI, PRINT_PATTERN);
boolean simpan = contains(URI, ADD_PATTERN);
boolean ubah = contains(URI, UPDATE_PATTERN);
boolean hapus = contains(URI, DELETE_PATTERN);
if (usingAnno) {
if (method.getAnnotation(AppPermission.class) != null) {
if (method.getAnnotation(AppPermission.class) != null)
action = method.getAnnotation(AppPermission.class).value();
}
if (AppPermission.SPECIALS == action /* && "#/home".equals(AlamatUrlForm) */) {
if (AppPermission.SPECIALS == action)
return true;
}
}
if (getM && cetak) {
action = AppPermission.PRINT;
// if (headerAction != null && !"".equals(headerAction)) {
// action = headerActionToAction(headerAction);
// }
if (method.getAnnotation(AppPermission.class) != null) {
if (method != null && method.getAnnotation(AppPermission.class) != null)
action = method.getAnnotation(AppPermission.class).value();
}
return checkPermission(request, response, AlamatUrlForm, action);
}
if ((usingAnno || postM) && signInOut) {
if (simpan) {
action = AppPermission.ADD;
} else if (ubah) {
@ -426,345 +260,104 @@ public class AppInterceptor implements HandlerInterceptor {
} else if (cetak) {
action = AppPermission.PRINT;
}
// if (headerAction != null && !"".equals(headerAction)) {
// action = headerActionToAction(headerAction);
// }
if (method.getAnnotation(AppPermission.class) != null) {
if (method != null && method.getAnnotation(AppPermission.class) != null)
action = method.getAnnotation(AppPermission.class).value();
}
return checkPermission(request, response, AlamatUrlForm, action);
}
} catch (Exception e) {
e.printStackTrace();
System.out.println("Not Found " + request.getRequestURL());
LOG.info("Error accured unauthorized");
response.setHeader(Constants.MessageInfo.ERROR_MESSAGE, "Something wrong happened");
response.setHeader("RequireSupervisor", "false");
response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
return false;
}
// TUTUP DULU PENGGUNAANNYA...
return true;
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object obj, ModelAndView mav) throws Exception {}
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object obj, ModelAndView mav) {
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object obj, Exception ex) throws Exception {
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object obj, Exception ex)
throws Exception {
String AlamatUrlForm = request.getHeader(Constants.HttpHeader.URL_FORM) == null ? ""
: request.getHeader(Constants.HttpHeader.URL_FORM);
String KdRuangan = request.getHeader(Constants.HttpHeader.KD_RUANGAN) == null ? ""
: request.getHeader(Constants.HttpHeader.KD_RUANGAN);
String idRuanganTujuan = request.getHeader(Constants.HttpHeader.KD_RUANGAN_T) == null ? ""
: request.getHeader(Constants.HttpHeader.KD_RUANGAN_T);
String idRuanganTujuanA = request.getHeader(Constants.HttpHeader.KD_RUANGAN_A) == null ? ""
: request.getHeader(Constants.HttpHeader.KD_RUANGAN_A);
String tglKirim = request.getHeader(Constants.HttpHeader.TGL_KIRIM) == null ? ""
: request.getHeader(Constants.HttpHeader.TGL_KIRIM);
boolean notHttpOK = response.getStatus() >= HttpServletResponse.SC_BAD_REQUEST;
boolean notLewatMenu = CommonUtil.isNullOrEmpty(AlamatUrlForm) || CommonUtil.isNullOrEmpty(KdRuangan);
Integer ruanganAsalId = 0;
try {
ruanganAsalId = Integer.parseInt(KdRuangan);
}catch(Exception e){
ex = e;
}
Integer ruanganAsalId = Integer.parseInt(KdRuangan);
boolean adaError = CommonUtil.isNotNullOrEmpty(ex);
if (notHttpOK || notLewatMenu || adaError){
if (notHttpOK || notLewatMenu || adaError)
return;
}
Authentication authentication = tokenAuthenticationService.getAuthentication(request);
if (CommonUtil.isNullOrEmpty(authentication)){
if (CommonUtil.isNullOrEmpty(authentication))
return;
}
namaUser = authentication.getName();
loginUser = loginUserDao.findByNamaUser(namaUser);
if (CommonUtil.isNullOrEmpty(loginUser)) {
if (CommonUtil.isNullOrEmpty(loginUser))
return;
}
String potongan = filterUrlForm(AlamatUrlForm);
List<ObjekModulAplikasiVO> objekModulAplikasiVOs = objekModulAplikasiService.findByAlamatUrlForm(potongan);
if (CommonUtil.isNullOrEmpty(objekModulAplikasiVOs)){
if (CommonUtil.isNullOrEmpty(objekModulAplikasiVOs))
return;
}
String URI = request.getRequestURI();
Integer objekModulAplikasId = objekModulAplikasiVOs.get(0).getId();
List<NotifMessagingVO> notifMessagingVOs = notifMessagingService.findByObjekModulAplikasiIdAndUrlBackEndOrUrlBackEndIsNull(objekModulAplikasId, URI);
if (CommonUtil.isNullOrEmpty(notifMessagingVOs)) {
List<NotifMessagingVO> notifMessagingVOs = notifMessagingService
.findByObjekModulAplikasiIdAndUrlBackEndOrUrlBackEndIsNull(objekModulAplikasId, URI);
if (CommonUtil.isNullOrEmpty(notifMessagingVOs))
return;
}
Integer notifMessagingId = notifMessagingVOs.get(0).getId();
if (CommonUtil.isNullOrEmpty(tglKirim)) {
List<Integer> ruanganTujuansId = new ArrayList<>();
System.out.println("--");
if (!"".equals(idRuanganTujuan)){
if (!"".equals(idRuanganTujuan)) {
JSONArray ruanganTujuanIds = new JSONArray(idRuanganTujuan);
for (int i=0; i<ruanganTujuanIds.length(); i++){
for (int i = 0; i < ruanganTujuanIds.length(); i++) {
Integer ruanganTujuanId = ruanganTujuanIds.optInt(i, 0);
ruanganTujuansId.add(ruanganTujuanId);
}
}
}
if (!"".equals(idRuanganTujuanA) && ruanganTujuansId.isEmpty()) {
JSONArray ruanganTujuanIds = new JSONArray(idRuanganTujuanA);
for (int i=0; i<ruanganTujuanIds.length(); i++){
for (int i = 0; i < ruanganTujuanIds.length(); i++) {
Integer ruanganTujuanId = ruanganTujuanIds.optInt(i, 0);
ruanganTujuansId.add(ruanganTujuanId);
}
}
MessagePublisher.RabbitHole rabbitHole = messagePublisher.getRabbitHole();
Pegawai pegawai = loginUser.get(0).getPegawai();
Ruangan ruanganAsal = ruanganDao.findById(ruanganAsalId);
if (ruanganTujuansId.size() > 0){
try{
rabbitHole.sendNotif(rabbitHole, ruanganAsal, pegawai, notifikasiMessageObjekModulService, notifMessagingId, ruanganTujuansId);
}catch(Exception e){
e.printStackTrace();
LOG.info(DateUtil.now()+" send notif dari Ruangan {} dengan ruanganId {} pada notifMessageId {} ada masalah {}",
ruanganAsal.getNamaRuangan(), ruanganAsalId, notifMessagingId, e.getMessage());
}
}
if (!ruanganTujuansId.isEmpty())
rabbitHole.sendNotif(rabbitHole, ruanganAsal, pegawai, notifikasiMessageObjekModulService,
notifMessagingId, ruanganTujuansId);
} else {
JSONArray tglKirims = new JSONArray(tglKirim);
JSONArray ruanganTujuanIds = new JSONArray(idRuanganTujuan);
SimpleDateFormat myFormat = new SimpleDateFormat("yyyy-MM-dd");
for (int i=0; i<tglKirims.length(); i++){
for (int i = 0; i < tglKirims.length(); i++) {
String ctglKirim = tglKirims.optString(i, "");
Integer cRuanganTujuanId = ruanganTujuanIds.optInt(i,0);
Integer cRuanganTujuanId = ruanganTujuanIds.optInt(i, 0);
Date date = myFormat.parse(ctglKirim);
NotifMessagingSchedulerVO vo = new NotifMessagingSchedulerVO();
vo.setTglKirim(date);
vo.setTerkirim(false);
vo.setNotifMessagingId(notifMessagingId);
vo.setRuanganIdAsal(ruanganAsalId);
vo.setRuanganIdTujuan(cRuanganTujuanId);
vo.setPegawaiId(loginUser.get(0).getPegawai().getId());
vo.setKdProfile((short)0);
vo.setKdProfile((short) 0);
vo.setKodeExternal("");
vo.setNamaExternal("");
vo.setReportDisplay("");
vo.setStatusEnabled(true);
notifMessagingSchedulerService.add(vo);
}
}
}
// <T extends BaseMasterVO> T convertToVO(T t, Object o){
// BeanUtils.copyProperties(t, o);
// return t;
// }
// try{
//
//
// String AlamatUrlForm =
// request.getHeader(Constants.HttpHeader.URL_FORM) == null ? "" :
// request.getHeader(Constants.HttpHeader.URL_FORM);
// String KdRuangan = request.getHeader(Constants.HttpHeader.KD_RUANGAN)
// == null ? "" : request.getHeader(Constants.HttpHeader.KD_RUANGAN);
//
// Authentication authentication =
// tokenAuthenticationService.getAuthentication(request);
//
// namaUser = authentication.getName();
// loginUser = loginUserDao.findByNamaUser(namaUser);
//
//
// if (loginUser.isEmpty()) {
// publisher.BroadcastMessage(KdRuangan, namaUser, AlamatUrlForm);
// }
//
//
//
//
//// String routingKeyAndQueueName = "ruanganId." + KdRuangan;
////
//// publisher.sendRabbitMQNotification("127.0.0.1", "ruanganId." +
// KdRuangan, "Kd Ruangan : " + KdRuangan + ", AlamatUrlForm : " +
// AlamatUrlForm);
////
//// subscriber.startRabbitMQNotification("127.0.0.1",
// routingKeyAndQueueName);
//// subscriber.listenRabbitMQNotification(routingKeyAndQueueName,
// subscriber.getDefaultConsumer(), false);
//// subscriber.stopRabbitMQNotification();
//
// }catch(Exception e){
// //e.printStackTrace();
// }
// //String urlSocket = messagePublisher.GetSettingDataFixed("UrlRabbitMQMessaging"); sementara kunci dulu.
//
// String urlSocket = "127.0.0.1";
//
// List<NotifikasiMessageObjekModulVO> notifikasiMessageObjekModulVOs = notifikasiMessageObjekModulService.findByNotifMessagingIdAndRuanganId(notifMessagingId, ruanganTujuansId);
//
// if (CommonUtil.isNullOrEmpty(notifikasiMessageObjekModulVOs)) {
// return;
// }
//
// Integer ruanganIdtemp = 0;
// boolean connect = false;
//
// for (NotifikasiMessageObjekModulVO vo : notifikasiMessageObjekModulVOs){
// Ruangan ruangan = vo.getRuangan();
// ModulAplikasi modulAplikasi = vo.getModulAplikasi();
// ObjekModulAplikasi objekModulAplikasi = vo.getObjekModulAplikasi();
// String customURLObjekModul = vo.getCustomURLObjekModul();
// String titleNotifikasi = vo.getTitleNotifikasi();
// String pesanNotifikasi = vo.getPesanNotifikasi();
// String namaFungsiFrontEnd = vo.getNamaFungsiFrontEnd();
//
// if (ruangan.getId() == ruanganId){
// continue;
// }
//
// RuanganVO dariRuangan = ruanganService.findById(ruanganId);
//
// if (ruanganIdtemp != ruangan.getId()){
// if (connect){
// rabbitHole.close();
// }
// rabbitHole.connect(urlSocket, String.valueOf(ruangan.getId()));
// connect = true;
// ruanganIdtemp = ruangan.getId();
// }
//
// Map<String, Object> map = new HashMap<>();
// map.put("title", titleNotifikasi);
// map.put("dariRuangan", dariRuangan);
// map.put("ruanganId", ruangan.getId());
// map.put("ruangan", convertToVO(new RuanganVO(), ruangan));
// map.put("modulAplikasi", convertToVO(new ModulAplikasiVO(), modulAplikasi));
// map.put("objekModulAplikasi", convertToVO(new ObjekModulAplikasiVO(), objekModulAplikasi));
// map.put("titleNotifikasi", titleNotifikasi);
// map.put("pesanNotifikasi", pesanNotifikasi);
// map.put("namaFungsiFrontEnd", namaFungsiFrontEnd);
// map.put("fromPegawai", loginUser.get(0).getPegawai());
// map.put("urlForm",CommonUtil.isNullOrEmpty(customURLObjekModul)? objekModulAplikasi.getAlamatUrlForm() : customURLObjekModul);
//
// rabbitHole.sendRabbitMQNotification(gson.toJson(map));
//
// //messagePublisher.BroadcastMessage(map);
// }
// if (connect){
// rabbitHole.close();
// }
// private static final TypeAdapterFactory FACTORY = new TypeAdapterFactory() {
// @Override
// @SuppressWarnings("unchecked")
// public <T> TypeAdapter<T> create(Gson gson, TypeToken<T> type) {
// return (HibernateProxy.class.isAssignableFrom(type.getRawType())
// ? (TypeAdapter<T>) new HibernateProxyTypeAdapter((TypeAdapter)gson.getAdapter(TypeToken.get(type.getRawType().getSuperclass())))
// : null);
// }
// };
//
//
// private static final class HibernateProxyTypeAdapter extends TypeAdapter<HibernateProxy> {
//
// private final TypeAdapter<Object> delegate;
//
// private HibernateProxyTypeAdapter(TypeAdapter<Object> delegate) {
// this.delegate = delegate;
// }
//
// @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;
// }
//
//
//
// delegate.write(out, ((HibernateProxy) value).getHibernateLazyInitializer().getImplementation());
// }
// }
}
/*
* else if (method.isAnnotationPresent(AppMenuPermision.class)){
*
* Authentication authentication =
* tokenAuthenticationService.getAuthentication(request);
*
* String namaUser = authentication.getName();
*
* List<LoginUser> loginUser =
* loginUserDao.findByNamaUser(namaUser);
*
* if (loginUser.isEmpty()) { // untuk testing false
* response.addHeader("Access-Control-Expose-Headers",
* "content-type");
* response.setHeader(Constants.MessageInfo.ERROR_MESSAGE, "User " +
* namaUser + " can not access current menu ");
* response.setStatus(HttpServletResponse.SC_UNAUTHORIZED); return
* false; }
*
* // get user login if (!loginUser.isEmpty()) { LoginUser user =
* loginUser.get(0); }else{ LOG.info("User {} is unauthorized",
* namaUser);
* response.setHeader(Constants.MessageInfo.ERROR_MESSAGE,
* "User is unauthorized");
* response.setStatus(HttpServletResponse.SC_UNAUTHORIZED); return
* false; } }
*/

View File

@ -106,7 +106,6 @@
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>${commons-io.version}</version>
<scope>runtime</scope>
</dependency>
<!-- For testing REST -->

View File

@ -1,70 +1,49 @@
package com.jasamedika.medifirst2000.interceptor;
import java.lang.reflect.Method;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.jasamedika.medifirst2000.constants.Constants;
import com.jasamedika.medifirst2000.dao.LoginUserDao;
import com.jasamedika.medifirst2000.dao.RuanganDao;
import com.jasamedika.medifirst2000.entities.*;
import com.jasamedika.medifirst2000.notification.MessagePublisher;
import com.jasamedika.medifirst2000.security.model.AppPermission;
import com.jasamedika.medifirst2000.security.service.TokenAuthenticationService;
import com.jasamedika.medifirst2000.service.*;
import com.jasamedika.medifirst2000.util.CommonUtil;
import com.jasamedika.medifirst2000.vo.NotifMessagingSchedulerVO;
import com.jasamedika.medifirst2000.vo.NotifMessagingVO;
import com.jasamedika.medifirst2000.vo.NotifikasiMessageObjekModulVO;
import com.jasamedika.medifirst2000.vo.ObjekModulAplikasiVO;
import org.apache.commons.lang3.ArrayUtils;
import org.json.JSONArray;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.core.Authentication;
import org.springframework.web.method.HandlerMethod;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
import com.jasamedika.medifirst2000.constants.Constants;
import com.jasamedika.medifirst2000.dao.LoginUserDao;
import com.jasamedika.medifirst2000.dao.NotifikasiMessageObjekModulDao;
import com.jasamedika.medifirst2000.dao.RuanganDao;
import com.jasamedika.medifirst2000.entities.KelompokUser;
import com.jasamedika.medifirst2000.entities.LoginUser;
import com.jasamedika.medifirst2000.entities.MapObjekModulToKelompokUser;
import com.jasamedika.medifirst2000.entities.MapObjekModulToLoginUser;
import com.jasamedika.medifirst2000.entities.Pegawai;
import com.jasamedika.medifirst2000.entities.Ruangan;
import com.jasamedika.medifirst2000.notification.MessagePublisher;
import com.jasamedika.medifirst2000.notification.MessageSubscriber;
import com.jasamedika.medifirst2000.security.model.AppPermission;
import com.jasamedika.medifirst2000.security.service.TokenAuthenticationService;
import com.jasamedika.medifirst2000.service.MapObjekModulToKelompokUserService;
import com.jasamedika.medifirst2000.service.MapObjekModulToLoginUserService;
import com.jasamedika.medifirst2000.service.NotifMessagingSchedulerService;
import com.jasamedika.medifirst2000.service.NotifMessagingService;
import com.jasamedika.medifirst2000.service.NotifikasiMessageObjekModulService;
import com.jasamedika.medifirst2000.service.ObjekModulAplikasiService;
import com.jasamedika.medifirst2000.util.CommonUtil;
import com.jasamedika.medifirst2000.util.DateUtil;
import com.jasamedika.medifirst2000.vo.NotifMessagingSchedulerVO;
import com.jasamedika.medifirst2000.vo.NotifMessagingVO;
import com.jasamedika.medifirst2000.vo.NotifikasiMessageObjekModulVO;
import com.jasamedika.medifirst2000.vo.ObjekModulAplikasiVO;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.lang.reflect.Method;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
/**
* Interceptor class for All annotation method controller @AppPermission
*
* @author Roberto
*
* direka ulang oleh Syamsu
* @author Roberto, direka ulang oleh Syamsu
*/
public class AppInterceptor implements HandlerInterceptor {
private static final String[] PRINT_PATTERN = {"/lap_", "/lap-", "/lap", "/cetak_", "/cetak-", "/print_", "/print-" };
private static final String[] ADD_PATTERN = {"/save_", "/save-", "/add_", "/add-", "/simpan_", "/simpan-"};
private static final String[] UPDATE_PATTERN = {"/update_", "/update-", "/edit_", "/edit-", "/ubah_", "/ubah-"};
private static final String[] PRINT_PATTERN = { "/lap_", "/lap-", "/lap", "/cetak_", "/cetak-", "/print_",
"/print-" };
private static final String[] DELETE_PATTERN = {"/delete_", "/delete-", "/hapus_", "/hapus-"};
private static final String[] ADD_PATTERN = { "/save_", "/save-", "/add_", "/add-", "/simpan_", "/simpan-" };
private final Logger LOG = LoggerFactory.getLogger(AppInterceptor.class);
private static final String[] UPDATE_PATTERN = { "/update_", "/update-", "/edit_", "/edit-", "/ubah_", "/ubah-" };
private static final String[] DELETE_PATTERN = { "/delete_", "/delete-", "/hapus_", "/hapus-" };
@Autowired
private TokenAuthenticationService tokenAuthenticationService;
@ -74,101 +53,55 @@ public class AppInterceptor implements HandlerInterceptor {
@Autowired
private MapObjekModulToKelompokUserService mapObjekModulToKelompokUserService;
@Autowired
private MapObjekModulToLoginUserService mapObjekModulToLoginUserService;
@Autowired
private ObjekModulAplikasiService<ObjekModulAplikasiVO> objekModulAplikasiService;
@Autowired
MessagePublisher<String, Object> messagePublisher;
@Autowired
MessageSubscriber messageSubscriber;
@Autowired
NotifMessagingService<NotifMessagingVO> notifMessagingService;
@Autowired
NotifikasiMessageObjekModulService<NotifikasiMessageObjekModulVO> notifikasiMessageObjekModulService;
@Autowired
NotifMessagingSchedulerService<NotifMessagingSchedulerVO> notifMessagingSchedulerService;
@Autowired
NotifikasiMessageObjekModulDao notifikasiModulMessageDao;
@Autowired
RuanganDao ruanganDao;
List<LoginUser> loginUser;
String namaUser;
// private int headerActionToAction(String action){
// if ("save".equals(action)){
// return AppPermission.ADD;
// } else if ("edit".equals(action)){
// return AppPermission.UPDATE;
// } else if ("delete".equals(action)){
// return AppPermission.DELETE;
// } else if ("print".equals(action)){
// return AppPermission.PRINT;
// } else {
// return AppPermission.VIEW;
// }
// }
private boolean contains(String source, String[] matchers){
if (CommonUtil.isNullOrEmpty(source) || ArrayUtils.isEmpty(matchers)){
private boolean contains(String source, String[] matchers) {
if (CommonUtil.isNullOrEmpty(source) || ArrayUtils.isEmpty(matchers))
return false;
}
for (int i=0;i<matchers.length; i++){
if (source.contains(matchers[i])){
for (String matcher : matchers)
if (source.contains(matcher))
return true;
}
}
return false;
}
private String filterUrlForm(String urlForm){
private String filterUrlForm(String urlForm) {
String[] hasil = urlForm.split("/");
System.out.println(hasil.length);
StringBuilder potongan = new StringBuilder();
for (int i=0; i<hasil.length && i<3; i++){
for (int i = 0; i < hasil.length && i < 3; i++)
potongan.append(hasil[i]).append("/");
}
// String current = urlForm;
// int pos = 0;
// int cpos = -1;
// for (int i=0; i<4; i++){
// pos = current.indexOf('/',pos+1);
// if (pos > 0){
// cpos = pos;
// }else{
// break;
// }
// }
// String oye = urlForm.substring(0, cpos);
return potongan.toString();
}
private boolean checkAuthSecure(HttpServletRequest request, HttpServletResponse response, String AlamatUrlForm, boolean supervisi) throws Exception {
private boolean checkAuthSecure(HttpServletRequest request, HttpServletResponse response, String AlamatUrlForm,
boolean supervisi) throws Exception {
Authentication authentication = tokenAuthenticationService.getAuthentication(request);
namaUser = authentication.getName();
loginUser = loginUserDao.findByNamaUser(namaUser);
if (CommonUtil.isNullOrEmpty(loginUser)) {
LOG.info("Empty login user");
response.setHeader("RequireSupervisor", "false");
response.setHeader(Constants.MessageInfo.ERROR_MESSAGE, "Empty login user");
response.setStatus(HttpServletResponse.SC_FORBIDDEN);
@ -176,132 +109,92 @@ public class AppInterceptor implements HandlerInterceptor {
}
return true;
}
private int checkUserPermision(LoginUser user, ObjekModulAplikasiVO objekModulAplikasiVO, int action){
private int checkUserPermision(LoginUser user, ObjekModulAplikasiVO objekModulAplikasiVO, int action) {
int result = -1;
MapObjekModulToLoginUser modul = mapObjekModulToLoginUserService.findByObjekModulAplikasi(objekModulAplikasiVO.getId(), user.getId());
MapObjekModulToLoginUser modul = mapObjekModulToLoginUserService
.findByObjekModulAplikasi(objekModulAplikasiVO.getId(), user.getId());
if (modul != null) {
LOG.info("Module security match");
result = 0;
switch (action) {
case AppPermission.ADD:
if (modul.getSimpan()){
result = 1;
}
break;
case AppPermission.UPDATE:
if (modul.getEdit()){
result = 1;
}
break;
case AppPermission.DELETE:
if (modul.getHapus()){
result = 1;
}
break;
case AppPermission.PRINT:
if (modul.getCetak()){
result = 1;
}
break;
case AppPermission.ADD:
if (modul.getSimpan())
result = 1;
break;
case AppPermission.UPDATE:
if (modul.getEdit())
result = 1;
break;
case AppPermission.DELETE:
if (modul.getHapus())
result = 1;
break;
case AppPermission.PRINT:
if (modul.getCetak())
result = 1;
break;
}
}
return result;
}
private int checkKelompokUserPermision(LoginUser user, ObjekModulAplikasiVO objekModulAplikasiVO, int action){
private int checkKelompokUserPermision(LoginUser user, ObjekModulAplikasiVO objekModulAplikasiVO, int action) {
KelompokUser role = user.getKelompokUser();
int result = -2;
if (role != null) {
MapObjekModulToKelompokUser modul = mapObjekModulToKelompokUserService.findByObjekModulAplikasi(objekModulAplikasiVO.getId(), role.getId());
MapObjekModulToKelompokUser modul = mapObjekModulToKelompokUserService
.findByObjekModulAplikasi(objekModulAplikasiVO.getId(), role.getId());
result = -1;
if (modul != null) {
LOG.info("Module security match");
result = 0;
switch (action) {
case AppPermission.ADD:
if (modul.getSimpan()){
result = 1;
}
break;
case AppPermission.UPDATE:
if (modul.getEdit()){
result = 1;
}
break;
case AppPermission.DELETE:
if (modul.getHapus()){
result = 1;
}
break;
case AppPermission.PRINT:
if (modul.getCetak()){
result = 1;
}
break;
case AppPermission.ADD:
if (modul.getSimpan())
result = 1;
break;
case AppPermission.UPDATE:
if (modul.getEdit())
result = 1;
break;
case AppPermission.DELETE:
if (modul.getHapus())
result = 1;
break;
case AppPermission.PRINT:
if (modul.getCetak())
result = 1;
break;
}
}
}
return result;
}
private boolean checkPermission(HttpServletRequest request, HttpServletResponse response, String AlamatUrlForm, int action) throws Exception {
// Alter modified Syamsu
List<ObjekModulAplikasiVO> objekModulAplikasi = objekModulAplikasiService.findByAlamatUrlForm(filterUrlForm(AlamatUrlForm));
if (CommonUtil.isNullOrEmpty(objekModulAplikasi)){
LOG.warn(AlamatUrlForm + " : Sementara defaultnya diloloskan semuanya di AppInterceptor jika tidak ada di dalam daftar objek modul aplikasi..");
return true; // Defaultnya diloloskan semuanya...
}
if (!checkAuthSecure(request, response, AlamatUrlForm, false)) {
private boolean checkPermission(HttpServletRequest request, HttpServletResponse response, String AlamatUrlForm,
int action) throws Exception {
List<ObjekModulAplikasiVO> objekModulAplikasi = objekModulAplikasiService
.findByAlamatUrlForm(filterUrlForm(AlamatUrlForm));
if (CommonUtil.isNullOrEmpty(objekModulAplikasi))
return true;
if (!checkAuthSecure(request, response, AlamatUrlForm, false))
return false;
}
int resultUser = checkUserPermision(loginUser.get(0), objekModulAplikasi.get(0), action);
if (resultUser == 0){
LOG.info("User {} has need superVisor for action in {} module application", namaUser, action);
if (resultUser == 0) {
response.setHeader("RequireSupervisor", "true");
response.setHeader(Constants.MessageInfo.ERROR_MESSAGE, "Action requires supervisor");
response.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
return false;
} else if (resultUser == 1){
} else if (resultUser == 1) {
response.setHeader(Constants.MessageInfo.INFO_MESSAGE, "Supervise execution success");
response.setStatus(HttpServletResponse.SC_OK);
return true;
}
}
int resultKelompokUser = checkKelompokUserPermision(loginUser.get(0), objekModulAplikasi.get(0), action);
if (resultKelompokUser == -2){
LOG.warn("Sementara defaultnya diloloskan semuanya di AppInterceptor jika tidak ada di dalam daftar kelompok user..");
return true; // Defaultnya diloloskan semuanya...
// LOG.info("User {} has no role to gain access restricted area", namaUser);
// response.setHeader("RequireSupervisor", "false");
// response.setHeader(Constants.MessageInfo.ERROR_MESSAGE,
// "User " + namaUser + " has no role to gain access restricted area");
// response.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
// return false;
} else if (resultKelompokUser == -1){
LOG.warn("Sementara defaultnya diloloskan semuanya di AppInterceptor jika tidak ada di dalam daftar Map objek modul to kelompok user..");
return true; // Defaultnya diloloskan semuanya...
// LOG.info("User {} has no access to module application", namaUser);
// response.setHeader("RequireSupervisor", "false");
// response.setHeader(Constants.MessageInfo.ERROR_MESSAGE,
// "User " + namaUser + " has no access to module application");
// response.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
// return false;
} else if (resultKelompokUser == 0) {
LOG.info("User {} has need superVisor for action in {} module application", namaUser, action);
if (resultKelompokUser == -2) {
return true;
} else if (resultKelompokUser == -1) {
return true;
} else if (resultKelompokUser == 0) {
response.setHeader("RequireSupervisor", "true");
response.setHeader(Constants.MessageInfo.ERROR_MESSAGE, "Action requires supervisor");
response.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
@ -310,113 +203,54 @@ public class AppInterceptor implements HandlerInterceptor {
response.setHeader(Constants.MessageInfo.INFO_MESSAGE, "Supervise execution success");
response.setStatus(HttpServletResponse.SC_OK);
return true;
}
}
}
/*
* return true untuk valid permission request ke controller method
*/
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
////// Syamsu /////
// TUTUP DULU PENGGUNAANNYA...
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) {
HandlerMethod hm;
Method method = null;
// int methodApp = AppPermission.VIEW;
Method method;
response.setHeader("Access-Control-Expose-Headers", "RequireSupervisor" + ","
+ Constants.MessageInfo.ERROR_MESSAGE + "," + Constants.MessageInfo.INFO_MESSAGE);
////// Syamsu /////
String AlamatUrlForm = request.getHeader(Constants.HttpHeader.URL_FORM) == null ? "": request.getHeader(Constants.HttpHeader.URL_FORM);
// Buat Om, Kang, Aa Reza terkait Security Role
//String KdRuangan = null;
String KdRuangan = request.getHeader(Constants.HttpHeader.KD_RUANGAN) == null ? "": request.getHeader(Constants.HttpHeader.KD_RUANGAN);
String AlamatUrlForm = request.getHeader(Constants.HttpHeader.URL_FORM) == null ? ""
: request.getHeader(Constants.HttpHeader.URL_FORM);
String KdRuangan = request.getHeader(Constants.HttpHeader.KD_RUANGAN) == null ? ""
: request.getHeader(Constants.HttpHeader.KD_RUANGAN);
int action = AppPermission.VIEW;
if (CommonUtil.isNullOrEmpty(AlamatUrlForm)){
//LOG.warn("Sementara defaultnya di loloskan semuanya di AppInterceptor jika tidak ada header 'AlamatUrlForm' ..");
return true; // Lewatin dulu sementara;
}
if (CommonUtil.isNullOrEmpty(KdRuangan) || "0".equals(KdRuangan)){
LOG.warn("Sementara defaultnya diloloskan semuanya di AppInterceptor jika tidak ada header 'KdRuangan' atau header 'KdRuangan'nya 0 ..");
return true; // Lewatin dulu sementara;
}
//String headerAction = request.getHeader(Constants.HttpHeader.ACTION) == null ? "" : request.getHeader(Constants.HttpHeader.ACTION);
if (CommonUtil.isNullOrEmpty(AlamatUrlForm))
return true;
if (CommonUtil.isNullOrEmpty(KdRuangan) || "0".equals(KdRuangan))
return true;
String URI = request.getRequestURI();
String methodHttp = request.getMethod();
try {
// Alter modified Syamsu
if (handler instanceof org.springframework.web.method.HandlerMethod) {
hm = (HandlerMethod) handler;
method = hm.getMethod();
} else {
return checkAuthSecure(request, response, AlamatUrlForm, true);
}
// AlamatUrlForm // Alter modified Syamsu
boolean usingAnno = method != null && method.isAnnotationPresent(AppPermission.class);
boolean postM = "POST".equals(methodHttp);
boolean signInOut = !URI.contains("auth/sign-in") && !URI.contains("auth/sign-out");
boolean getM = "GET".equals(methodHttp);
boolean cetak = contains (URI, PRINT_PATTERN);
/*(URI.contains("/lap_") || URI.contains("/lap-") || URI.contains("/lap")
|| URI.contains("/cetak_") || URI.contains("/print_") || URI.contains("/cetak-")
|| URI.contains("/print-"));*/
boolean simpan = contains (URI, ADD_PATTERN);
/*(URI.contains("/save_") || URI.contains("/add_") || URI.contains("/simpan_")
|| URI.contains("/save-") || URI.contains("/add-") || URI.contains("/simpan-"));*/
boolean ubah = contains (URI, UPDATE_PATTERN);
/*(URI.contains("/update_") || URI.contains("/edit_") || URI.contains("/ubah_")
|| URI.contains("/update-") || URI.contains("/edit-") || URI.contains("/ubah-"));*/
boolean hapus = contains (URI, DELETE_PATTERN);
/*(URI.contains("/delete_") || URI.contains("/hapus_") || URI.contains("/delete-")
|| URI.contains("/hapus-")); */
boolean cetak = contains(URI, PRINT_PATTERN);
boolean simpan = contains(URI, ADD_PATTERN);
boolean ubah = contains(URI, UPDATE_PATTERN);
boolean hapus = contains(URI, DELETE_PATTERN);
if (usingAnno) {
if (method.getAnnotation(AppPermission.class) != null) {
if (method.getAnnotation(AppPermission.class) != null)
action = method.getAnnotation(AppPermission.class).value();
}
if (AppPermission.SPECIALS == action /* && "#/home".equals(AlamatUrlForm) */) {
if (AppPermission.SPECIALS == action)
return true;
}
}
if (getM && cetak) {
action = AppPermission.PRINT;
// if (headerAction != null && !"".equals(headerAction)) {
// action = headerActionToAction(headerAction);
// }
if (method.getAnnotation(AppPermission.class) != null) {
if (method != null && method.getAnnotation(AppPermission.class) != null)
action = method.getAnnotation(AppPermission.class).value();
}
return checkPermission(request, response, AlamatUrlForm, action);
}
if ((usingAnno || postM) && signInOut) {
if (simpan) {
action = AppPermission.ADD;
} else if (ubah) {
@ -426,345 +260,104 @@ public class AppInterceptor implements HandlerInterceptor {
} else if (cetak) {
action = AppPermission.PRINT;
}
// if (headerAction != null && !"".equals(headerAction)) {
// action = headerActionToAction(headerAction);
// }
if (method.getAnnotation(AppPermission.class) != null) {
if (method != null && method.getAnnotation(AppPermission.class) != null)
action = method.getAnnotation(AppPermission.class).value();
}
return checkPermission(request, response, AlamatUrlForm, action);
}
} catch (Exception e) {
e.printStackTrace();
System.out.println("Not Found " + request.getRequestURL());
LOG.info("Error accured unauthorized");
response.setHeader(Constants.MessageInfo.ERROR_MESSAGE, "Something wrong happened");
response.setHeader("RequireSupervisor", "false");
response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
return false;
}
// TUTUP DULU PENGGUNAANNYA...
return true;
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object obj, ModelAndView mav) throws Exception {}
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object obj, ModelAndView mav) {
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object obj, Exception ex) throws Exception {
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object obj, Exception ex)
throws Exception {
String AlamatUrlForm = request.getHeader(Constants.HttpHeader.URL_FORM) == null ? ""
: request.getHeader(Constants.HttpHeader.URL_FORM);
String KdRuangan = request.getHeader(Constants.HttpHeader.KD_RUANGAN) == null ? ""
: request.getHeader(Constants.HttpHeader.KD_RUANGAN);
String idRuanganTujuan = request.getHeader(Constants.HttpHeader.KD_RUANGAN_T) == null ? ""
: request.getHeader(Constants.HttpHeader.KD_RUANGAN_T);
String idRuanganTujuanA = request.getHeader(Constants.HttpHeader.KD_RUANGAN_A) == null ? ""
: request.getHeader(Constants.HttpHeader.KD_RUANGAN_A);
String tglKirim = request.getHeader(Constants.HttpHeader.TGL_KIRIM) == null ? ""
: request.getHeader(Constants.HttpHeader.TGL_KIRIM);
boolean notHttpOK = response.getStatus() >= HttpServletResponse.SC_BAD_REQUEST;
boolean notLewatMenu = CommonUtil.isNullOrEmpty(AlamatUrlForm) || CommonUtil.isNullOrEmpty(KdRuangan);
Integer ruanganAsalId = 0;
try {
ruanganAsalId = Integer.parseInt(KdRuangan);
}catch(Exception e){
ex = e;
}
Integer ruanganAsalId = Integer.parseInt(KdRuangan);
boolean adaError = CommonUtil.isNotNullOrEmpty(ex);
if (notHttpOK || notLewatMenu || adaError){
if (notHttpOK || notLewatMenu || adaError)
return;
}
Authentication authentication = tokenAuthenticationService.getAuthentication(request);
if (CommonUtil.isNullOrEmpty(authentication)){
if (CommonUtil.isNullOrEmpty(authentication))
return;
}
namaUser = authentication.getName();
loginUser = loginUserDao.findByNamaUser(namaUser);
if (CommonUtil.isNullOrEmpty(loginUser)) {
if (CommonUtil.isNullOrEmpty(loginUser))
return;
}
String potongan = filterUrlForm(AlamatUrlForm);
List<ObjekModulAplikasiVO> objekModulAplikasiVOs = objekModulAplikasiService.findByAlamatUrlForm(potongan);
if (CommonUtil.isNullOrEmpty(objekModulAplikasiVOs)){
if (CommonUtil.isNullOrEmpty(objekModulAplikasiVOs))
return;
}
String URI = request.getRequestURI();
Integer objekModulAplikasId = objekModulAplikasiVOs.get(0).getId();
List<NotifMessagingVO> notifMessagingVOs = notifMessagingService.findByObjekModulAplikasiIdAndUrlBackEndOrUrlBackEndIsNull(objekModulAplikasId, URI);
if (CommonUtil.isNullOrEmpty(notifMessagingVOs)) {
List<NotifMessagingVO> notifMessagingVOs = notifMessagingService
.findByObjekModulAplikasiIdAndUrlBackEndOrUrlBackEndIsNull(objekModulAplikasId, URI);
if (CommonUtil.isNullOrEmpty(notifMessagingVOs))
return;
}
Integer notifMessagingId = notifMessagingVOs.get(0).getId();
if (CommonUtil.isNullOrEmpty(tglKirim)) {
List<Integer> ruanganTujuansId = new ArrayList<>();
System.out.println("--");
if (!"".equals(idRuanganTujuan)){
if (!"".equals(idRuanganTujuan)) {
JSONArray ruanganTujuanIds = new JSONArray(idRuanganTujuan);
for (int i=0; i<ruanganTujuanIds.length(); i++){
for (int i = 0; i < ruanganTujuanIds.length(); i++) {
Integer ruanganTujuanId = ruanganTujuanIds.optInt(i, 0);
ruanganTujuansId.add(ruanganTujuanId);
}
}
}
if (!"".equals(idRuanganTujuanA) && ruanganTujuansId.isEmpty()) {
JSONArray ruanganTujuanIds = new JSONArray(idRuanganTujuanA);
for (int i=0; i<ruanganTujuanIds.length(); i++){
for (int i = 0; i < ruanganTujuanIds.length(); i++) {
Integer ruanganTujuanId = ruanganTujuanIds.optInt(i, 0);
ruanganTujuansId.add(ruanganTujuanId);
}
}
MessagePublisher.RabbitHole rabbitHole = messagePublisher.getRabbitHole();
Pegawai pegawai = loginUser.get(0).getPegawai();
Ruangan ruanganAsal = ruanganDao.findById(ruanganAsalId);
if (ruanganTujuansId.size() > 0){
try{
rabbitHole.sendNotif(rabbitHole, ruanganAsal, pegawai, notifikasiMessageObjekModulService, notifMessagingId, ruanganTujuansId);
}catch(Exception e){
e.printStackTrace();
LOG.info(DateUtil.now()+" send notif dari Ruangan {} dengan ruanganId {} pada notifMessageId {} ada masalah {}",
ruanganAsal.getNamaRuangan(), ruanganAsalId, notifMessagingId, e.getMessage());
}
}
if (!ruanganTujuansId.isEmpty())
rabbitHole.sendNotif(rabbitHole, ruanganAsal, pegawai, notifikasiMessageObjekModulService,
notifMessagingId, ruanganTujuansId);
} else {
JSONArray tglKirims = new JSONArray(tglKirim);
JSONArray ruanganTujuanIds = new JSONArray(idRuanganTujuan);
SimpleDateFormat myFormat = new SimpleDateFormat("yyyy-MM-dd");
for (int i=0; i<tglKirims.length(); i++){
for (int i = 0; i < tglKirims.length(); i++) {
String ctglKirim = tglKirims.optString(i, "");
Integer cRuanganTujuanId = ruanganTujuanIds.optInt(i,0);
Integer cRuanganTujuanId = ruanganTujuanIds.optInt(i, 0);
Date date = myFormat.parse(ctglKirim);
NotifMessagingSchedulerVO vo = new NotifMessagingSchedulerVO();
vo.setTglKirim(date);
vo.setTerkirim(false);
vo.setNotifMessagingId(notifMessagingId);
vo.setRuanganIdAsal(ruanganAsalId);
vo.setRuanganIdTujuan(cRuanganTujuanId);
vo.setPegawaiId(loginUser.get(0).getPegawai().getId());
vo.setKdProfile((short)0);
vo.setKdProfile((short) 0);
vo.setKodeExternal("");
vo.setNamaExternal("");
vo.setReportDisplay("");
vo.setStatusEnabled(true);
notifMessagingSchedulerService.add(vo);
}
}
}
// <T extends BaseMasterVO> T convertToVO(T t, Object o){
// BeanUtils.copyProperties(t, o);
// return t;
// }
// try{
//
//
// String AlamatUrlForm =
// request.getHeader(Constants.HttpHeader.URL_FORM) == null ? "" :
// request.getHeader(Constants.HttpHeader.URL_FORM);
// String KdRuangan = request.getHeader(Constants.HttpHeader.KD_RUANGAN)
// == null ? "" : request.getHeader(Constants.HttpHeader.KD_RUANGAN);
//
// Authentication authentication =
// tokenAuthenticationService.getAuthentication(request);
//
// namaUser = authentication.getName();
// loginUser = loginUserDao.findByNamaUser(namaUser);
//
//
// if (loginUser.isEmpty()) {
// publisher.BroadcastMessage(KdRuangan, namaUser, AlamatUrlForm);
// }
//
//
//
//
//// String routingKeyAndQueueName = "ruanganId." + KdRuangan;
////
//// publisher.sendRabbitMQNotification("127.0.0.1", "ruanganId." +
// KdRuangan, "Kd Ruangan : " + KdRuangan + ", AlamatUrlForm : " +
// AlamatUrlForm);
////
//// subscriber.startRabbitMQNotification("127.0.0.1",
// routingKeyAndQueueName);
//// subscriber.listenRabbitMQNotification(routingKeyAndQueueName,
// subscriber.getDefaultConsumer(), false);
//// subscriber.stopRabbitMQNotification();
//
// }catch(Exception e){
// //e.printStackTrace();
// }
// //String urlSocket = messagePublisher.GetSettingDataFixed("UrlRabbitMQMessaging"); sementara kunci dulu.
//
// String urlSocket = "127.0.0.1";
//
// List<NotifikasiMessageObjekModulVO> notifikasiMessageObjekModulVOs = notifikasiMessageObjekModulService.findByNotifMessagingIdAndRuanganId(notifMessagingId, ruanganTujuansId);
//
// if (CommonUtil.isNullOrEmpty(notifikasiMessageObjekModulVOs)) {
// return;
// }
//
// Integer ruanganIdtemp = 0;
// boolean connect = false;
//
// for (NotifikasiMessageObjekModulVO vo : notifikasiMessageObjekModulVOs){
// Ruangan ruangan = vo.getRuangan();
// ModulAplikasi modulAplikasi = vo.getModulAplikasi();
// ObjekModulAplikasi objekModulAplikasi = vo.getObjekModulAplikasi();
// String customURLObjekModul = vo.getCustomURLObjekModul();
// String titleNotifikasi = vo.getTitleNotifikasi();
// String pesanNotifikasi = vo.getPesanNotifikasi();
// String namaFungsiFrontEnd = vo.getNamaFungsiFrontEnd();
//
// if (ruangan.getId() == ruanganId){
// continue;
// }
//
// RuanganVO dariRuangan = ruanganService.findById(ruanganId);
//
// if (ruanganIdtemp != ruangan.getId()){
// if (connect){
// rabbitHole.close();
// }
// rabbitHole.connect(urlSocket, String.valueOf(ruangan.getId()));
// connect = true;
// ruanganIdtemp = ruangan.getId();
// }
//
// Map<String, Object> map = new HashMap<>();
// map.put("title", titleNotifikasi);
// map.put("dariRuangan", dariRuangan);
// map.put("ruanganId", ruangan.getId());
// map.put("ruangan", convertToVO(new RuanganVO(), ruangan));
// map.put("modulAplikasi", convertToVO(new ModulAplikasiVO(), modulAplikasi));
// map.put("objekModulAplikasi", convertToVO(new ObjekModulAplikasiVO(), objekModulAplikasi));
// map.put("titleNotifikasi", titleNotifikasi);
// map.put("pesanNotifikasi", pesanNotifikasi);
// map.put("namaFungsiFrontEnd", namaFungsiFrontEnd);
// map.put("fromPegawai", loginUser.get(0).getPegawai());
// map.put("urlForm",CommonUtil.isNullOrEmpty(customURLObjekModul)? objekModulAplikasi.getAlamatUrlForm() : customURLObjekModul);
//
// rabbitHole.sendRabbitMQNotification(gson.toJson(map));
//
// //messagePublisher.BroadcastMessage(map);
// }
// if (connect){
// rabbitHole.close();
// }
// private static final TypeAdapterFactory FACTORY = new TypeAdapterFactory() {
// @Override
// @SuppressWarnings("unchecked")
// public <T> TypeAdapter<T> create(Gson gson, TypeToken<T> type) {
// return (HibernateProxy.class.isAssignableFrom(type.getRawType())
// ? (TypeAdapter<T>) new HibernateProxyTypeAdapter((TypeAdapter)gson.getAdapter(TypeToken.get(type.getRawType().getSuperclass())))
// : null);
// }
// };
//
//
// private static final class HibernateProxyTypeAdapter extends TypeAdapter<HibernateProxy> {
//
// private final TypeAdapter<Object> delegate;
//
// private HibernateProxyTypeAdapter(TypeAdapter<Object> delegate) {
// this.delegate = delegate;
// }
//
// @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;
// }
//
//
//
// delegate.write(out, ((HibernateProxy) value).getHibernateLazyInitializer().getImplementation());
// }
// }
}
/*
* else if (method.isAnnotationPresent(AppMenuPermision.class)){
*
* Authentication authentication =
* tokenAuthenticationService.getAuthentication(request);
*
* String namaUser = authentication.getName();
*
* List<LoginUser> loginUser =
* loginUserDao.findByNamaUser(namaUser);
*
* if (loginUser.isEmpty()) { // untuk testing false
* response.addHeader("Access-Control-Expose-Headers",
* "content-type");
* response.setHeader(Constants.MessageInfo.ERROR_MESSAGE, "User " +
* namaUser + " can not access current menu ");
* response.setStatus(HttpServletResponse.SC_UNAUTHORIZED); return
* false; }
*
* // get user login if (!loginUser.isEmpty()) { LoginUser user =
* loginUser.get(0); }else{ LOG.info("User {} is unauthorized",
* namaUser);
* response.setHeader(Constants.MessageInfo.ERROR_MESSAGE,
* "User is unauthorized");
* response.setStatus(HttpServletResponse.SC_UNAUTHORIZED); return
* false; } }
*/

View File

@ -106,7 +106,6 @@
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>${commons-io.version}</version>
<scope>runtime</scope>
</dependency>
<!-- For testing REST -->

View File

@ -1,70 +1,50 @@
package com.jasamedika.medifirst2000.interceptor;
import java.lang.reflect.Method;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.jasamedika.medifirst2000.constants.Constants;
import com.jasamedika.medifirst2000.dao.LoginUserDao;
import com.jasamedika.medifirst2000.dao.RuanganDao;
import com.jasamedika.medifirst2000.entities.*;
import com.jasamedika.medifirst2000.notification.MessagePublisher;
import com.jasamedika.medifirst2000.security.model.AppPermission;
import com.jasamedika.medifirst2000.security.service.TokenAuthenticationService;
import com.jasamedika.medifirst2000.service.*;
import com.jasamedika.medifirst2000.util.CommonUtil;
import com.jasamedika.medifirst2000.vo.NotifMessagingSchedulerVO;
import com.jasamedika.medifirst2000.vo.NotifMessagingVO;
import com.jasamedika.medifirst2000.vo.NotifikasiMessageObjekModulVO;
import com.jasamedika.medifirst2000.vo.ObjekModulAplikasiVO;
import org.apache.commons.lang3.ArrayUtils;
import org.json.JSONArray;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.core.Authentication;
import org.springframework.web.method.HandlerMethod;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
import com.jasamedika.medifirst2000.constants.Constants;
import com.jasamedika.medifirst2000.dao.LoginUserDao;
import com.jasamedika.medifirst2000.dao.NotifikasiMessageObjekModulDao;
import com.jasamedika.medifirst2000.dao.RuanganDao;
import com.jasamedika.medifirst2000.entities.KelompokUser;
import com.jasamedika.medifirst2000.entities.LoginUser;
import com.jasamedika.medifirst2000.entities.MapObjekModulToKelompokUser;
import com.jasamedika.medifirst2000.entities.MapObjekModulToLoginUser;
import com.jasamedika.medifirst2000.entities.Pegawai;
import com.jasamedika.medifirst2000.entities.Ruangan;
import com.jasamedika.medifirst2000.notification.MessagePublisher;
import com.jasamedika.medifirst2000.notification.MessageSubscriber;
import com.jasamedika.medifirst2000.security.model.AppPermission;
import com.jasamedika.medifirst2000.security.service.TokenAuthenticationService;
import com.jasamedika.medifirst2000.service.MapObjekModulToKelompokUserService;
import com.jasamedika.medifirst2000.service.MapObjekModulToLoginUserService;
import com.jasamedika.medifirst2000.service.NotifMessagingSchedulerService;
import com.jasamedika.medifirst2000.service.NotifMessagingService;
import com.jasamedika.medifirst2000.service.NotifikasiMessageObjekModulService;
import com.jasamedika.medifirst2000.service.ObjekModulAplikasiService;
import com.jasamedika.medifirst2000.util.CommonUtil;
import com.jasamedika.medifirst2000.util.DateUtil;
import com.jasamedika.medifirst2000.vo.NotifMessagingSchedulerVO;
import com.jasamedika.medifirst2000.vo.NotifMessagingVO;
import com.jasamedika.medifirst2000.vo.NotifikasiMessageObjekModulVO;
import com.jasamedika.medifirst2000.vo.ObjekModulAplikasiVO;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.lang.reflect.Method;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
/**
* Interceptor class for All annotation method controller @AppPermission
*
* @author Roberto
*
* direka ulang oleh Syamsu
* @author Roberto, direka ulang oleh Syamsu
*/
public class AppInterceptor implements HandlerInterceptor {
private static final String[] PRINT_PATTERN = {"/lap_", "/lap-", "/lap", "/cetak_", "/cetak-", "/print_", "/print-" };
private static final String[] ADD_PATTERN = {"/save_", "/save-", "/add_", "/add-", "/simpan_", "/simpan-"};
private static final String[] UPDATE_PATTERN = {"/update_", "/update-", "/edit_", "/edit-", "/ubah_", "/ubah-"};
private static final String[] PRINT_PATTERN = { "/lap_", "/lap-", "/lap", "/cetak_", "/cetak-", "/print_",
"/print-" };
private static final String[] DELETE_PATTERN = {"/delete_", "/delete-", "/hapus_", "/hapus-"};
private static final String[] ADD_PATTERN = { "/save_", "/save-", "/add_", "/add-", "/simpan_", "/simpan-" };
private final Logger LOG = LoggerFactory.getLogger(AppInterceptor.class);
private static final String[] UPDATE_PATTERN = { "/update_", "/update-", "/edit_", "/edit-", "/ubah_", "/ubah-" };
private static final String[] DELETE_PATTERN = { "/delete_", "/delete-", "/hapus_", "/hapus-" };
@Autowired
private TokenAuthenticationService tokenAuthenticationService;
@ -74,101 +54,55 @@ public class AppInterceptor implements HandlerInterceptor {
@Autowired
private MapObjekModulToKelompokUserService mapObjekModulToKelompokUserService;
@Autowired
private MapObjekModulToLoginUserService mapObjekModulToLoginUserService;
@Autowired
private ObjekModulAplikasiService<ObjekModulAplikasiVO> objekModulAplikasiService;
@Autowired
MessagePublisher<String, Object> messagePublisher;
@Autowired
MessageSubscriber messageSubscriber;
@Autowired
NotifMessagingService<NotifMessagingVO> notifMessagingService;
@Autowired
NotifikasiMessageObjekModulService<NotifikasiMessageObjekModulVO> notifikasiMessageObjekModulService;
@Autowired
NotifMessagingSchedulerService<NotifMessagingSchedulerVO> notifMessagingSchedulerService;
@Autowired
NotifikasiMessageObjekModulDao notifikasiModulMessageDao;
@Autowired
RuanganDao ruanganDao;
List<LoginUser> loginUser;
String namaUser;
// private int headerActionToAction(String action){
// if ("save".equals(action)){
// return AppPermission.ADD;
// } else if ("edit".equals(action)){
// return AppPermission.UPDATE;
// } else if ("delete".equals(action)){
// return AppPermission.DELETE;
// } else if ("print".equals(action)){
// return AppPermission.PRINT;
// } else {
// return AppPermission.VIEW;
// }
// }
private boolean contains(String source, String[] matchers){
if (CommonUtil.isNullOrEmpty(source) || ArrayUtils.isEmpty(matchers)){
private boolean contains(String source, String[] matchers) {
if (CommonUtil.isNullOrEmpty(source) || ArrayUtils.isEmpty(matchers))
return false;
}
for (int i=0;i<matchers.length; i++){
if (source.contains(matchers[i])){
for (String matcher : matchers)
if (source.contains(matcher))
return true;
}
}
return false;
}
private String filterUrlForm(String urlForm){
private String filterUrlForm(String urlForm) {
String[] hasil = urlForm.split("/");
System.out.println(hasil.length);
StringBuilder potongan = new StringBuilder();
for (int i=0; i<hasil.length && i<3; i++){
for (int i = 0; i < hasil.length && i < 3; i++)
potongan.append(hasil[i]).append("/");
}
// String current = urlForm;
// int pos = 0;
// int cpos = -1;
// for (int i=0; i<4; i++){
// pos = current.indexOf('/',pos+1);
// if (pos > 0){
// cpos = pos;
// }else{
// break;
// }
// }
// String oye = urlForm.substring(0, cpos);
return potongan.toString();
}
private boolean checkAuthSecure(HttpServletRequest request, HttpServletResponse response, String AlamatUrlForm, boolean supervisi) throws Exception {
private boolean checkAuthSecure(HttpServletRequest request, HttpServletResponse response, String AlamatUrlForm,
boolean supervisi) throws Exception {
Authentication authentication = tokenAuthenticationService.getAuthentication(request);
namaUser = authentication.getName();
loginUser = loginUserDao.findByNamaUser(namaUser);
if (CommonUtil.isNullOrEmpty(loginUser)) {
LOG.info("Empty login user");
response.setHeader("RequireSupervisor", "false");
response.setHeader(Constants.MessageInfo.ERROR_MESSAGE, "Empty login user");
response.setStatus(HttpServletResponse.SC_FORBIDDEN);
@ -176,132 +110,92 @@ public class AppInterceptor implements HandlerInterceptor {
}
return true;
}
private int checkUserPermision(LoginUser user, ObjekModulAplikasiVO objekModulAplikasiVO, int action){
private int checkUserPermision(LoginUser user, ObjekModulAplikasiVO objekModulAplikasiVO, int action) {
int result = -1;
MapObjekModulToLoginUser modul = mapObjekModulToLoginUserService.findByObjekModulAplikasi(objekModulAplikasiVO.getId(), user.getId());
MapObjekModulToLoginUser modul = mapObjekModulToLoginUserService
.findByObjekModulAplikasi(objekModulAplikasiVO.getId(), user.getId());
if (modul != null) {
LOG.info("Module security match");
result = 0;
switch (action) {
case AppPermission.ADD:
if (modul.getSimpan()){
result = 1;
}
break;
case AppPermission.UPDATE:
if (modul.getEdit()){
result = 1;
}
break;
case AppPermission.DELETE:
if (modul.getHapus()){
result = 1;
}
break;
case AppPermission.PRINT:
if (modul.getCetak()){
result = 1;
}
break;
case AppPermission.ADD:
if (modul.getSimpan())
result = 1;
break;
case AppPermission.UPDATE:
if (modul.getEdit())
result = 1;
break;
case AppPermission.DELETE:
if (modul.getHapus())
result = 1;
break;
case AppPermission.PRINT:
if (modul.getCetak())
result = 1;
break;
}
}
return result;
}
private int checkKelompokUserPermision(LoginUser user, ObjekModulAplikasiVO objekModulAplikasiVO, int action){
private int checkKelompokUserPermision(LoginUser user, ObjekModulAplikasiVO objekModulAplikasiVO, int action) {
KelompokUser role = user.getKelompokUser();
int result = -2;
if (role != null) {
MapObjekModulToKelompokUser modul = mapObjekModulToKelompokUserService.findByObjekModulAplikasi(objekModulAplikasiVO.getId(), role.getId());
MapObjekModulToKelompokUser modul = mapObjekModulToKelompokUserService
.findByObjekModulAplikasi(objekModulAplikasiVO.getId(), role.getId());
result = -1;
if (modul != null) {
LOG.info("Module security match");
result = 0;
switch (action) {
case AppPermission.ADD:
if (modul.getSimpan()){
result = 1;
}
break;
case AppPermission.UPDATE:
if (modul.getEdit()){
result = 1;
}
break;
case AppPermission.DELETE:
if (modul.getHapus()){
result = 1;
}
break;
case AppPermission.PRINT:
if (modul.getCetak()){
result = 1;
}
break;
case AppPermission.ADD:
if (modul.getSimpan())
result = 1;
break;
case AppPermission.UPDATE:
if (modul.getEdit())
result = 1;
break;
case AppPermission.DELETE:
if (modul.getHapus())
result = 1;
break;
case AppPermission.PRINT:
if (modul.getCetak())
result = 1;
break;
}
}
}
return result;
}
private boolean checkPermission(HttpServletRequest request, HttpServletResponse response, String AlamatUrlForm, int action) throws Exception {
// Alter modified Syamsu
List<ObjekModulAplikasiVO> objekModulAplikasi = objekModulAplikasiService.findByAlamatUrlForm(filterUrlForm(AlamatUrlForm));
if (CommonUtil.isNullOrEmpty(objekModulAplikasi)){
LOG.warn(AlamatUrlForm + " : Sementara defaultnya diloloskan semuanya di AppInterceptor jika tidak ada di dalam daftar objek modul aplikasi..");
return true; // Defaultnya diloloskan semuanya...
}
if (!checkAuthSecure(request, response, AlamatUrlForm, false)) {
private boolean checkPermission(HttpServletRequest request, HttpServletResponse response, String AlamatUrlForm,
int action) throws Exception {
List<ObjekModulAplikasiVO> objekModulAplikasi = objekModulAplikasiService
.findByAlamatUrlForm(filterUrlForm(AlamatUrlForm));
if (CommonUtil.isNullOrEmpty(objekModulAplikasi))
return true;
if (!checkAuthSecure(request, response, AlamatUrlForm, false))
return false;
}
int resultUser = checkUserPermision(loginUser.get(0), objekModulAplikasi.get(0), action);
if (resultUser == 0){
LOG.info("User {} has need superVisor for action in {} module application", namaUser, action);
if (resultUser == 0) {
response.setHeader("RequireSupervisor", "true");
response.setHeader(Constants.MessageInfo.ERROR_MESSAGE, "Action requires supervisor");
response.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
return false;
} else if (resultUser == 1){
} else if (resultUser == 1) {
response.setHeader(Constants.MessageInfo.INFO_MESSAGE, "Supervise execution success");
response.setStatus(HttpServletResponse.SC_OK);
return true;
}
}
int resultKelompokUser = checkKelompokUserPermision(loginUser.get(0), objekModulAplikasi.get(0), action);
if (resultKelompokUser == -2){
LOG.warn("Sementara defaultnya diloloskan semuanya di AppInterceptor jika tidak ada di dalam daftar kelompok user..");
return true; // Defaultnya diloloskan semuanya...
// LOG.info("User {} has no role to gain access restricted area", namaUser);
// response.setHeader("RequireSupervisor", "false");
// response.setHeader(Constants.MessageInfo.ERROR_MESSAGE,
// "User " + namaUser + " has no role to gain access restricted area");
// response.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
// return false;
} else if (resultKelompokUser == -1){
LOG.warn("Sementara defaultnya diloloskan semuanya di AppInterceptor jika tidak ada di dalam daftar Map objek modul to kelompok user..");
return true; // Defaultnya diloloskan semuanya...
// LOG.info("User {} has no access to module application", namaUser);
// response.setHeader("RequireSupervisor", "false");
// response.setHeader(Constants.MessageInfo.ERROR_MESSAGE,
// "User " + namaUser + " has no access to module application");
// response.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
// return false;
} else if (resultKelompokUser == 0) {
LOG.info("User {} has need superVisor for action in {} module application", namaUser, action);
if (resultKelompokUser == -2) {
return true;
} else if (resultKelompokUser == -1) {
return true;
} else if (resultKelompokUser == 0) {
response.setHeader("RequireSupervisor", "true");
response.setHeader(Constants.MessageInfo.ERROR_MESSAGE, "Action requires supervisor");
response.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
@ -310,113 +204,54 @@ public class AppInterceptor implements HandlerInterceptor {
response.setHeader(Constants.MessageInfo.INFO_MESSAGE, "Supervise execution success");
response.setStatus(HttpServletResponse.SC_OK);
return true;
}
}
}
/*
* return true untuk valid permission request ke controller method
*/
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
////// Syamsu /////
// TUTUP DULU PENGGUNAANNYA...
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) {
HandlerMethod hm;
Method method = null;
// int methodApp = AppPermission.VIEW;
Method method;
response.setHeader("Access-Control-Expose-Headers", "RequireSupervisor" + ","
+ Constants.MessageInfo.ERROR_MESSAGE + "," + Constants.MessageInfo.INFO_MESSAGE);
////// Syamsu /////
String AlamatUrlForm = request.getHeader(Constants.HttpHeader.URL_FORM) == null ? "": request.getHeader(Constants.HttpHeader.URL_FORM);
// Buat Om, Kang, Aa Reza terkait Security Role
//String KdRuangan = null;
String KdRuangan = request.getHeader(Constants.HttpHeader.KD_RUANGAN) == null ? "": request.getHeader(Constants.HttpHeader.KD_RUANGAN);
String AlamatUrlForm = request.getHeader(Constants.HttpHeader.URL_FORM) == null ? ""
: request.getHeader(Constants.HttpHeader.URL_FORM);
String KdRuangan = request.getHeader(Constants.HttpHeader.KD_RUANGAN) == null ? ""
: request.getHeader(Constants.HttpHeader.KD_RUANGAN);
int action = AppPermission.VIEW;
if (CommonUtil.isNullOrEmpty(AlamatUrlForm)){
//LOG.warn("Sementara defaultnya di loloskan semuanya di AppInterceptor jika tidak ada header 'AlamatUrlForm' ..");
return true; // Lewatin dulu sementara;
}
if (CommonUtil.isNullOrEmpty(KdRuangan) || "0".equals(KdRuangan)){
LOG.warn("Sementara defaultnya diloloskan semuanya di AppInterceptor jika tidak ada header 'KdRuangan' atau header 'KdRuangan'nya 0 ..");
return true; // Lewatin dulu sementara;
}
//String headerAction = request.getHeader(Constants.HttpHeader.ACTION) == null ? "" : request.getHeader(Constants.HttpHeader.ACTION);
if (CommonUtil.isNullOrEmpty(AlamatUrlForm))
return true;
if (CommonUtil.isNullOrEmpty(KdRuangan) || "0".equals(KdRuangan))
return true;
String URI = request.getRequestURI();
String methodHttp = request.getMethod();
try {
// Alter modified Syamsu
if (handler instanceof org.springframework.web.method.HandlerMethod) {
hm = (HandlerMethod) handler;
method = hm.getMethod();
} else {
return checkAuthSecure(request, response, AlamatUrlForm, true);
}
// AlamatUrlForm // Alter modified Syamsu
boolean usingAnno = method != null && method.isAnnotationPresent(AppPermission.class);
boolean postM = "POST".equals(methodHttp);
boolean signInOut = !URI.contains("auth/sign-in") && !URI.contains("auth/sign-out");
boolean getM = "GET".equals(methodHttp);
boolean cetak = contains (URI, PRINT_PATTERN);
/*(URI.contains("/lap_") || URI.contains("/lap-") || URI.contains("/lap")
|| URI.contains("/cetak_") || URI.contains("/print_") || URI.contains("/cetak-")
|| URI.contains("/print-"));*/
boolean simpan = contains (URI, ADD_PATTERN);
/*(URI.contains("/save_") || URI.contains("/add_") || URI.contains("/simpan_")
|| URI.contains("/save-") || URI.contains("/add-") || URI.contains("/simpan-"));*/
boolean ubah = contains (URI, UPDATE_PATTERN);
/*(URI.contains("/update_") || URI.contains("/edit_") || URI.contains("/ubah_")
|| URI.contains("/update-") || URI.contains("/edit-") || URI.contains("/ubah-"));*/
boolean hapus = contains (URI, DELETE_PATTERN);
/*(URI.contains("/delete_") || URI.contains("/hapus_") || URI.contains("/delete-")
|| URI.contains("/hapus-")); */
boolean cetak = contains(URI, PRINT_PATTERN);
boolean simpan = contains(URI, ADD_PATTERN);
boolean ubah = contains(URI, UPDATE_PATTERN);
boolean hapus = contains(URI, DELETE_PATTERN);
if (usingAnno) {
if (method.getAnnotation(AppPermission.class) != null) {
if (method.getAnnotation(AppPermission.class) != null)
action = method.getAnnotation(AppPermission.class).value();
}
if (AppPermission.SPECIALS == action /* && "#/home".equals(AlamatUrlForm) */) {
if (AppPermission.SPECIALS == action)
return true;
}
}
if (getM && cetak) {
action = AppPermission.PRINT;
// if (headerAction != null && !"".equals(headerAction)) {
// action = headerActionToAction(headerAction);
// }
if (method.getAnnotation(AppPermission.class) != null) {
if (method != null && method.getAnnotation(AppPermission.class) != null)
action = method.getAnnotation(AppPermission.class).value();
}
return checkPermission(request, response, AlamatUrlForm, action);
}
if ((usingAnno || postM) && signInOut) {
if (simpan) {
action = AppPermission.ADD;
} else if (ubah) {
@ -426,345 +261,104 @@ public class AppInterceptor implements HandlerInterceptor {
} else if (cetak) {
action = AppPermission.PRINT;
}
// if (headerAction != null && !"".equals(headerAction)) {
// action = headerActionToAction(headerAction);
// }
if (method.getAnnotation(AppPermission.class) != null) {
if (method != null && method.getAnnotation(AppPermission.class) != null)
action = method.getAnnotation(AppPermission.class).value();
}
return checkPermission(request, response, AlamatUrlForm, action);
}
} catch (Exception e) {
e.printStackTrace();
System.out.println("Not Found " + request.getRequestURL());
LOG.info("Error accured unauthorized");
response.setHeader(Constants.MessageInfo.ERROR_MESSAGE, "Something wrong happened");
response.setHeader("RequireSupervisor", "false");
response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
return false;
}
// TUTUP DULU PENGGUNAANNYA...
return true;
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object obj, ModelAndView mav) throws Exception {}
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object obj, ModelAndView mav) {
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object obj, Exception ex) throws Exception {
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object obj, Exception ex)
throws Exception {
String AlamatUrlForm = request.getHeader(Constants.HttpHeader.URL_FORM) == null ? ""
: request.getHeader(Constants.HttpHeader.URL_FORM);
String KdRuangan = request.getHeader(Constants.HttpHeader.KD_RUANGAN) == null ? ""
: request.getHeader(Constants.HttpHeader.KD_RUANGAN);
String idRuanganTujuan = request.getHeader(Constants.HttpHeader.KD_RUANGAN_T) == null ? ""
: request.getHeader(Constants.HttpHeader.KD_RUANGAN_T);
String idRuanganTujuanA = request.getHeader(Constants.HttpHeader.KD_RUANGAN_A) == null ? ""
: request.getHeader(Constants.HttpHeader.KD_RUANGAN_A);
String tglKirim = request.getHeader(Constants.HttpHeader.TGL_KIRIM) == null ? ""
: request.getHeader(Constants.HttpHeader.TGL_KIRIM);
boolean notHttpOK = response.getStatus() >= HttpServletResponse.SC_BAD_REQUEST;
boolean notLewatMenu = CommonUtil.isNullOrEmpty(AlamatUrlForm) || CommonUtil.isNullOrEmpty(KdRuangan);
Integer ruanganAsalId = 0;
try {
ruanganAsalId = Integer.parseInt(KdRuangan);
}catch(Exception e){
ex = e;
}
Integer ruanganAsalId = Integer.parseInt(KdRuangan);
boolean adaError = CommonUtil.isNotNullOrEmpty(ex);
if (notHttpOK || notLewatMenu || adaError){
if (notHttpOK || notLewatMenu || adaError)
return;
}
Authentication authentication = tokenAuthenticationService.getAuthentication(request);
if (CommonUtil.isNullOrEmpty(authentication)){
if (CommonUtil.isNullOrEmpty(authentication))
return;
}
namaUser = authentication.getName();
loginUser = loginUserDao.findByNamaUser(namaUser);
if (CommonUtil.isNullOrEmpty(loginUser)) {
if (CommonUtil.isNullOrEmpty(loginUser))
return;
}
String potongan = filterUrlForm(AlamatUrlForm);
List<ObjekModulAplikasiVO> objekModulAplikasiVOs = objekModulAplikasiService.findByAlamatUrlForm(potongan);
if (CommonUtil.isNullOrEmpty(objekModulAplikasiVOs)){
if (CommonUtil.isNullOrEmpty(objekModulAplikasiVOs))
return;
}
String URI = request.getRequestURI();
Integer objekModulAplikasId = objekModulAplikasiVOs.get(0).getId();
List<NotifMessagingVO> notifMessagingVOs = notifMessagingService.findByObjekModulAplikasiIdAndUrlBackEndOrUrlBackEndIsNull(objekModulAplikasId, URI);
if (CommonUtil.isNullOrEmpty(notifMessagingVOs)) {
List<NotifMessagingVO> notifMessagingVOs = notifMessagingService
.findByObjekModulAplikasiIdAndUrlBackEndOrUrlBackEndIsNull(objekModulAplikasId, URI);
if (CommonUtil.isNullOrEmpty(notifMessagingVOs))
return;
}
Integer notifMessagingId = notifMessagingVOs.get(0).getId();
if (CommonUtil.isNullOrEmpty(tglKirim)) {
List<Integer> ruanganTujuansId = new ArrayList<>();
System.out.println("--");
if (!"".equals(idRuanganTujuan)){
if (!"".equals(idRuanganTujuan)) {
JSONArray ruanganTujuanIds = new JSONArray(idRuanganTujuan);
for (int i=0; i<ruanganTujuanIds.length(); i++){
for (int i = 0; i < ruanganTujuanIds.length(); i++) {
Integer ruanganTujuanId = ruanganTujuanIds.optInt(i, 0);
ruanganTujuansId.add(ruanganTujuanId);
}
}
}
if (!"".equals(idRuanganTujuanA) && ruanganTujuansId.isEmpty()) {
JSONArray ruanganTujuanIds = new JSONArray(idRuanganTujuanA);
for (int i=0; i<ruanganTujuanIds.length(); i++){
for (int i = 0; i < ruanganTujuanIds.length(); i++) {
Integer ruanganTujuanId = ruanganTujuanIds.optInt(i, 0);
ruanganTujuansId.add(ruanganTujuanId);
}
}
MessagePublisher.RabbitHole rabbitHole = messagePublisher.getRabbitHole();
Pegawai pegawai = loginUser.get(0).getPegawai();
Ruangan ruanganAsal = ruanganDao.findById(ruanganAsalId);
if (ruanganTujuansId.size() > 0){
try{
rabbitHole.sendNotif(rabbitHole, ruanganAsal, pegawai, notifikasiMessageObjekModulService, notifMessagingId, ruanganTujuansId);
}catch(Exception e){
e.printStackTrace();
LOG.info(DateUtil.now()+" send notif dari Ruangan {} dengan ruanganId {} pada notifMessageId {} ada masalah {}",
ruanganAsal.getNamaRuangan(), ruanganAsalId, notifMessagingId, e.getMessage());
}
}
if (!ruanganTujuansId.isEmpty())
rabbitHole.sendNotif(rabbitHole, ruanganAsal, pegawai, notifikasiMessageObjekModulService,
notifMessagingId, ruanganTujuansId);
} else {
JSONArray tglKirims = new JSONArray(tglKirim);
JSONArray ruanganTujuanIds = new JSONArray(idRuanganTujuan);
SimpleDateFormat myFormat = new SimpleDateFormat("yyyy-MM-dd");
for (int i=0; i<tglKirims.length(); i++){
for (int i = 0; i < tglKirims.length(); i++) {
String ctglKirim = tglKirims.optString(i, "");
Integer cRuanganTujuanId = ruanganTujuanIds.optInt(i,0);
Integer cRuanganTujuanId = ruanganTujuanIds.optInt(i, 0);
Date date = myFormat.parse(ctglKirim);
NotifMessagingSchedulerVO vo = new NotifMessagingSchedulerVO();
vo.setTglKirim(date);
vo.setTerkirim(false);
vo.setNotifMessagingId(notifMessagingId);
vo.setRuanganIdAsal(ruanganAsalId);
vo.setRuanganIdTujuan(cRuanganTujuanId);
vo.setPegawaiId(loginUser.get(0).getPegawai().getId());
vo.setKdProfile((short)0);
vo.setKdProfile((short) 0);
vo.setKodeExternal("");
vo.setNamaExternal("");
vo.setReportDisplay("");
vo.setStatusEnabled(true);
notifMessagingSchedulerService.add(vo);
}
}
}
// <T extends BaseMasterVO> T convertToVO(T t, Object o){
// BeanUtils.copyProperties(t, o);
// return t;
// }
// try{
//
//
// String AlamatUrlForm =
// request.getHeader(Constants.HttpHeader.URL_FORM) == null ? "" :
// request.getHeader(Constants.HttpHeader.URL_FORM);
// String KdRuangan = request.getHeader(Constants.HttpHeader.KD_RUANGAN)
// == null ? "" : request.getHeader(Constants.HttpHeader.KD_RUANGAN);
//
// Authentication authentication =
// tokenAuthenticationService.getAuthentication(request);
//
// namaUser = authentication.getName();
// loginUser = loginUserDao.findByNamaUser(namaUser);
//
//
// if (loginUser.isEmpty()) {
// publisher.BroadcastMessage(KdRuangan, namaUser, AlamatUrlForm);
// }
//
//
//
//
//// String routingKeyAndQueueName = "ruanganId." + KdRuangan;
////
//// publisher.sendRabbitMQNotification("127.0.0.1", "ruanganId." +
// KdRuangan, "Kd Ruangan : " + KdRuangan + ", AlamatUrlForm : " +
// AlamatUrlForm);
////
//// subscriber.startRabbitMQNotification("127.0.0.1",
// routingKeyAndQueueName);
//// subscriber.listenRabbitMQNotification(routingKeyAndQueueName,
// subscriber.getDefaultConsumer(), false);
//// subscriber.stopRabbitMQNotification();
//
// }catch(Exception e){
// //e.printStackTrace();
// }
// //String urlSocket = messagePublisher.GetSettingDataFixed("UrlRabbitMQMessaging"); sementara kunci dulu.
//
// String urlSocket = "127.0.0.1";
//
// List<NotifikasiMessageObjekModulVO> notifikasiMessageObjekModulVOs = notifikasiMessageObjekModulService.findByNotifMessagingIdAndRuanganId(notifMessagingId, ruanganTujuansId);
//
// if (CommonUtil.isNullOrEmpty(notifikasiMessageObjekModulVOs)) {
// return;
// }
//
// Integer ruanganIdtemp = 0;
// boolean connect = false;
//
// for (NotifikasiMessageObjekModulVO vo : notifikasiMessageObjekModulVOs){
// Ruangan ruangan = vo.getRuangan();
// ModulAplikasi modulAplikasi = vo.getModulAplikasi();
// ObjekModulAplikasi objekModulAplikasi = vo.getObjekModulAplikasi();
// String customURLObjekModul = vo.getCustomURLObjekModul();
// String titleNotifikasi = vo.getTitleNotifikasi();
// String pesanNotifikasi = vo.getPesanNotifikasi();
// String namaFungsiFrontEnd = vo.getNamaFungsiFrontEnd();
//
// if (ruangan.getId() == ruanganId){
// continue;
// }
//
// RuanganVO dariRuangan = ruanganService.findById(ruanganId);
//
// if (ruanganIdtemp != ruangan.getId()){
// if (connect){
// rabbitHole.close();
// }
// rabbitHole.connect(urlSocket, String.valueOf(ruangan.getId()));
// connect = true;
// ruanganIdtemp = ruangan.getId();
// }
//
// Map<String, Object> map = new HashMap<>();
// map.put("title", titleNotifikasi);
// map.put("dariRuangan", dariRuangan);
// map.put("ruanganId", ruangan.getId());
// map.put("ruangan", convertToVO(new RuanganVO(), ruangan));
// map.put("modulAplikasi", convertToVO(new ModulAplikasiVO(), modulAplikasi));
// map.put("objekModulAplikasi", convertToVO(new ObjekModulAplikasiVO(), objekModulAplikasi));
// map.put("titleNotifikasi", titleNotifikasi);
// map.put("pesanNotifikasi", pesanNotifikasi);
// map.put("namaFungsiFrontEnd", namaFungsiFrontEnd);
// map.put("fromPegawai", loginUser.get(0).getPegawai());
// map.put("urlForm",CommonUtil.isNullOrEmpty(customURLObjekModul)? objekModulAplikasi.getAlamatUrlForm() : customURLObjekModul);
//
// rabbitHole.sendRabbitMQNotification(gson.toJson(map));
//
// //messagePublisher.BroadcastMessage(map);
// }
// if (connect){
// rabbitHole.close();
// }
// private static final TypeAdapterFactory FACTORY = new TypeAdapterFactory() {
// @Override
// @SuppressWarnings("unchecked")
// public <T> TypeAdapter<T> create(Gson gson, TypeToken<T> type) {
// return (HibernateProxy.class.isAssignableFrom(type.getRawType())
// ? (TypeAdapter<T>) new HibernateProxyTypeAdapter((TypeAdapter)gson.getAdapter(TypeToken.get(type.getRawType().getSuperclass())))
// : null);
// }
// };
//
//
// private static final class HibernateProxyTypeAdapter extends TypeAdapter<HibernateProxy> {
//
// private final TypeAdapter<Object> delegate;
//
// private HibernateProxyTypeAdapter(TypeAdapter<Object> delegate) {
// this.delegate = delegate;
// }
//
// @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;
// }
//
//
//
// delegate.write(out, ((HibernateProxy) value).getHibernateLazyInitializer().getImplementation());
// }
// }
}
/*
* else if (method.isAnnotationPresent(AppMenuPermision.class)){
*
* Authentication authentication =
* tokenAuthenticationService.getAuthentication(request);
*
* String namaUser = authentication.getName();
*
* List<LoginUser> loginUser =
* loginUserDao.findByNamaUser(namaUser);
*
* if (loginUser.isEmpty()) { // untuk testing false
* response.addHeader("Access-Control-Expose-Headers",
* "content-type");
* response.setHeader(Constants.MessageInfo.ERROR_MESSAGE, "User " +
* namaUser + " can not access current menu ");
* response.setStatus(HttpServletResponse.SC_UNAUTHORIZED); return
* false; }
*
* // get user login if (!loginUser.isEmpty()) { LoginUser user =
* loginUser.get(0); }else{ LOG.info("User {} is unauthorized",
* namaUser);
* response.setHeader(Constants.MessageInfo.ERROR_MESSAGE,
* "User is unauthorized");
* response.setStatus(HttpServletResponse.SC_UNAUTHORIZED); return
* false; } }
*/

View File

@ -106,7 +106,6 @@
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>${commons-io.version}</version>
<scope>runtime</scope>
</dependency>
<!-- For testing REST -->

View File

@ -1,70 +1,49 @@
package com.jasamedika.medifirst2000.interceptor;
import java.lang.reflect.Method;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.jasamedika.medifirst2000.constants.Constants;
import com.jasamedika.medifirst2000.dao.LoginUserDao;
import com.jasamedika.medifirst2000.dao.RuanganDao;
import com.jasamedika.medifirst2000.entities.*;
import com.jasamedika.medifirst2000.notification.MessagePublisher;
import com.jasamedika.medifirst2000.security.model.AppPermission;
import com.jasamedika.medifirst2000.security.service.TokenAuthenticationService;
import com.jasamedika.medifirst2000.service.*;
import com.jasamedika.medifirst2000.util.CommonUtil;
import com.jasamedika.medifirst2000.vo.NotifMessagingSchedulerVO;
import com.jasamedika.medifirst2000.vo.NotifMessagingVO;
import com.jasamedika.medifirst2000.vo.NotifikasiMessageObjekModulVO;
import com.jasamedika.medifirst2000.vo.ObjekModulAplikasiVO;
import org.apache.commons.lang3.ArrayUtils;
import org.json.JSONArray;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.core.Authentication;
import org.springframework.web.method.HandlerMethod;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
import com.jasamedika.medifirst2000.constants.Constants;
import com.jasamedika.medifirst2000.dao.LoginUserDao;
import com.jasamedika.medifirst2000.dao.NotifikasiMessageObjekModulDao;
import com.jasamedika.medifirst2000.dao.RuanganDao;
import com.jasamedika.medifirst2000.entities.KelompokUser;
import com.jasamedika.medifirst2000.entities.LoginUser;
import com.jasamedika.medifirst2000.entities.MapObjekModulToKelompokUser;
import com.jasamedika.medifirst2000.entities.MapObjekModulToLoginUser;
import com.jasamedika.medifirst2000.entities.Pegawai;
import com.jasamedika.medifirst2000.entities.Ruangan;
import com.jasamedika.medifirst2000.notification.MessagePublisher;
import com.jasamedika.medifirst2000.notification.MessageSubscriber;
import com.jasamedika.medifirst2000.security.model.AppPermission;
import com.jasamedika.medifirst2000.security.service.TokenAuthenticationService;
import com.jasamedika.medifirst2000.service.MapObjekModulToKelompokUserService;
import com.jasamedika.medifirst2000.service.MapObjekModulToLoginUserService;
import com.jasamedika.medifirst2000.service.NotifMessagingSchedulerService;
import com.jasamedika.medifirst2000.service.NotifMessagingService;
import com.jasamedika.medifirst2000.service.NotifikasiMessageObjekModulService;
import com.jasamedika.medifirst2000.service.ObjekModulAplikasiService;
import com.jasamedika.medifirst2000.util.CommonUtil;
import com.jasamedika.medifirst2000.util.DateUtil;
import com.jasamedika.medifirst2000.vo.NotifMessagingSchedulerVO;
import com.jasamedika.medifirst2000.vo.NotifMessagingVO;
import com.jasamedika.medifirst2000.vo.NotifikasiMessageObjekModulVO;
import com.jasamedika.medifirst2000.vo.ObjekModulAplikasiVO;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.lang.reflect.Method;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
/**
* Interceptor class for All annotation method controller @AppPermission
*
* @author Roberto
*
* direka ulang oleh Syamsu
* @author Roberto, direka ulang oleh Syamsu
*/
public class AppInterceptor implements HandlerInterceptor {
private static final String[] PRINT_PATTERN = {"/lap_", "/lap-", "/lap", "/cetak_", "/cetak-", "/print_", "/print-" };
private static final String[] ADD_PATTERN = {"/save_", "/save-", "/add_", "/add-", "/simpan_", "/simpan-"};
private static final String[] UPDATE_PATTERN = {"/update_", "/update-", "/edit_", "/edit-", "/ubah_", "/ubah-"};
private static final String[] PRINT_PATTERN = { "/lap_", "/lap-", "/lap", "/cetak_", "/cetak-", "/print_",
"/print-" };
private static final String[] DELETE_PATTERN = {"/delete_", "/delete-", "/hapus_", "/hapus-"};
private static final String[] ADD_PATTERN = { "/save_", "/save-", "/add_", "/add-", "/simpan_", "/simpan-" };
private final Logger LOG = LoggerFactory.getLogger(AppInterceptor.class);
private static final String[] UPDATE_PATTERN = { "/update_", "/update-", "/edit_", "/edit-", "/ubah_", "/ubah-" };
private static final String[] DELETE_PATTERN = { "/delete_", "/delete-", "/hapus_", "/hapus-" };
@Autowired
private TokenAuthenticationService tokenAuthenticationService;
@ -74,101 +53,55 @@ public class AppInterceptor implements HandlerInterceptor {
@Autowired
private MapObjekModulToKelompokUserService mapObjekModulToKelompokUserService;
@Autowired
private MapObjekModulToLoginUserService mapObjekModulToLoginUserService;
@Autowired
private ObjekModulAplikasiService<ObjekModulAplikasiVO> objekModulAplikasiService;
@Autowired
MessagePublisher<String, Object> messagePublisher;
@Autowired
MessageSubscriber messageSubscriber;
@Autowired
NotifMessagingService<NotifMessagingVO> notifMessagingService;
@Autowired
NotifikasiMessageObjekModulService<NotifikasiMessageObjekModulVO> notifikasiMessageObjekModulService;
@Autowired
NotifMessagingSchedulerService<NotifMessagingSchedulerVO> notifMessagingSchedulerService;
@Autowired
NotifikasiMessageObjekModulDao notifikasiModulMessageDao;
@Autowired
RuanganDao ruanganDao;
List<LoginUser> loginUser;
String namaUser;
// private int headerActionToAction(String action){
// if ("save".equals(action)){
// return AppPermission.ADD;
// } else if ("edit".equals(action)){
// return AppPermission.UPDATE;
// } else if ("delete".equals(action)){
// return AppPermission.DELETE;
// } else if ("print".equals(action)){
// return AppPermission.PRINT;
// } else {
// return AppPermission.VIEW;
// }
// }
private boolean contains(String source, String[] matchers){
if (CommonUtil.isNullOrEmpty(source) || ArrayUtils.isEmpty(matchers)){
private boolean contains(String source, String[] matchers) {
if (CommonUtil.isNullOrEmpty(source) || ArrayUtils.isEmpty(matchers))
return false;
}
for (int i=0;i<matchers.length; i++){
if (source.contains(matchers[i])){
for (String matcher : matchers)
if (source.contains(matcher))
return true;
}
}
return false;
}
private String filterUrlForm(String urlForm){
private String filterUrlForm(String urlForm) {
String[] hasil = urlForm.split("/");
System.out.println(hasil.length);
StringBuilder potongan = new StringBuilder();
for (int i=0; i<hasil.length && i<3; i++){
for (int i = 0; i < hasil.length && i < 3; i++)
potongan.append(hasil[i]).append("/");
}
// String current = urlForm;
// int pos = 0;
// int cpos = -1;
// for (int i=0; i<4; i++){
// pos = current.indexOf('/',pos+1);
// if (pos > 0){
// cpos = pos;
// }else{
// break;
// }
// }
// String oye = urlForm.substring(0, cpos);
return potongan.toString();
}
private boolean checkAuthSecure(HttpServletRequest request, HttpServletResponse response, String AlamatUrlForm, boolean supervisi) throws Exception {
private boolean checkAuthSecure(HttpServletRequest request, HttpServletResponse response, String AlamatUrlForm,
boolean supervisi) throws Exception {
Authentication authentication = tokenAuthenticationService.getAuthentication(request);
namaUser = authentication.getName();
loginUser = loginUserDao.findByNamaUser(namaUser);
if (CommonUtil.isNullOrEmpty(loginUser)) {
LOG.info("Empty login user");
response.setHeader("RequireSupervisor", "false");
response.setHeader(Constants.MessageInfo.ERROR_MESSAGE, "Empty login user");
response.setStatus(HttpServletResponse.SC_FORBIDDEN);
@ -176,132 +109,92 @@ public class AppInterceptor implements HandlerInterceptor {
}
return true;
}
private int checkUserPermision(LoginUser user, ObjekModulAplikasiVO objekModulAplikasiVO, int action){
private int checkUserPermision(LoginUser user, ObjekModulAplikasiVO objekModulAplikasiVO, int action) {
int result = -1;
MapObjekModulToLoginUser modul = mapObjekModulToLoginUserService.findByObjekModulAplikasi(objekModulAplikasiVO.getId(), user.getId());
MapObjekModulToLoginUser modul = mapObjekModulToLoginUserService
.findByObjekModulAplikasi(objekModulAplikasiVO.getId(), user.getId());
if (modul != null) {
LOG.info("Module security match");
result = 0;
switch (action) {
case AppPermission.ADD:
if (modul.getSimpan()){
result = 1;
}
break;
case AppPermission.UPDATE:
if (modul.getEdit()){
result = 1;
}
break;
case AppPermission.DELETE:
if (modul.getHapus()){
result = 1;
}
break;
case AppPermission.PRINT:
if (modul.getCetak()){
result = 1;
}
break;
case AppPermission.ADD:
if (modul.getSimpan())
result = 1;
break;
case AppPermission.UPDATE:
if (modul.getEdit())
result = 1;
break;
case AppPermission.DELETE:
if (modul.getHapus())
result = 1;
break;
case AppPermission.PRINT:
if (modul.getCetak())
result = 1;
break;
}
}
return result;
}
private int checkKelompokUserPermision(LoginUser user, ObjekModulAplikasiVO objekModulAplikasiVO, int action){
private int checkKelompokUserPermision(LoginUser user, ObjekModulAplikasiVO objekModulAplikasiVO, int action) {
KelompokUser role = user.getKelompokUser();
int result = -2;
if (role != null) {
MapObjekModulToKelompokUser modul = mapObjekModulToKelompokUserService.findByObjekModulAplikasi(objekModulAplikasiVO.getId(), role.getId());
MapObjekModulToKelompokUser modul = mapObjekModulToKelompokUserService
.findByObjekModulAplikasi(objekModulAplikasiVO.getId(), role.getId());
result = -1;
if (modul != null) {
LOG.info("Module security match");
result = 0;
switch (action) {
case AppPermission.ADD:
if (modul.getSimpan()){
result = 1;
}
break;
case AppPermission.UPDATE:
if (modul.getEdit()){
result = 1;
}
break;
case AppPermission.DELETE:
if (modul.getHapus()){
result = 1;
}
break;
case AppPermission.PRINT:
if (modul.getCetak()){
result = 1;
}
break;
case AppPermission.ADD:
if (modul.getSimpan())
result = 1;
break;
case AppPermission.UPDATE:
if (modul.getEdit())
result = 1;
break;
case AppPermission.DELETE:
if (modul.getHapus())
result = 1;
break;
case AppPermission.PRINT:
if (modul.getCetak())
result = 1;
break;
}
}
}
return result;
}
private boolean checkPermission(HttpServletRequest request, HttpServletResponse response, String AlamatUrlForm, int action) throws Exception {
// Alter modified Syamsu
List<ObjekModulAplikasiVO> objekModulAplikasi = objekModulAplikasiService.findByAlamatUrlForm(filterUrlForm(AlamatUrlForm));
if (CommonUtil.isNullOrEmpty(objekModulAplikasi)){
LOG.warn(AlamatUrlForm + " : Sementara defaultnya diloloskan semuanya di AppInterceptor jika tidak ada di dalam daftar objek modul aplikasi..");
return true; // Defaultnya diloloskan semuanya...
}
if (!checkAuthSecure(request, response, AlamatUrlForm, false)) {
private boolean checkPermission(HttpServletRequest request, HttpServletResponse response, String AlamatUrlForm,
int action) throws Exception {
List<ObjekModulAplikasiVO> objekModulAplikasi = objekModulAplikasiService
.findByAlamatUrlForm(filterUrlForm(AlamatUrlForm));
if (CommonUtil.isNullOrEmpty(objekModulAplikasi))
return true;
if (!checkAuthSecure(request, response, AlamatUrlForm, false))
return false;
}
int resultUser = checkUserPermision(loginUser.get(0), objekModulAplikasi.get(0), action);
if (resultUser == 0){
LOG.info("User {} has need superVisor for action in {} module application", namaUser, action);
if (resultUser == 0) {
response.setHeader("RequireSupervisor", "true");
response.setHeader(Constants.MessageInfo.ERROR_MESSAGE, "Action requires supervisor");
response.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
return false;
} else if (resultUser == 1){
} else if (resultUser == 1) {
response.setHeader(Constants.MessageInfo.INFO_MESSAGE, "Supervise execution success");
response.setStatus(HttpServletResponse.SC_OK);
return true;
}
}
int resultKelompokUser = checkKelompokUserPermision(loginUser.get(0), objekModulAplikasi.get(0), action);
if (resultKelompokUser == -2){
LOG.warn("Sementara defaultnya diloloskan semuanya di AppInterceptor jika tidak ada di dalam daftar kelompok user..");
return true; // Defaultnya diloloskan semuanya...
// LOG.info("User {} has no role to gain access restricted area", namaUser);
// response.setHeader("RequireSupervisor", "false");
// response.setHeader(Constants.MessageInfo.ERROR_MESSAGE,
// "User " + namaUser + " has no role to gain access restricted area");
// response.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
// return false;
} else if (resultKelompokUser == -1){
LOG.warn("Sementara defaultnya diloloskan semuanya di AppInterceptor jika tidak ada di dalam daftar Map objek modul to kelompok user..");
return true; // Defaultnya diloloskan semuanya...
// LOG.info("User {} has no access to module application", namaUser);
// response.setHeader("RequireSupervisor", "false");
// response.setHeader(Constants.MessageInfo.ERROR_MESSAGE,
// "User " + namaUser + " has no access to module application");
// response.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
// return false;
} else if (resultKelompokUser == 0) {
LOG.info("User {} has need superVisor for action in {} module application", namaUser, action);
if (resultKelompokUser == -2) {
return true;
} else if (resultKelompokUser == -1) {
return true;
} else if (resultKelompokUser == 0) {
response.setHeader("RequireSupervisor", "true");
response.setHeader(Constants.MessageInfo.ERROR_MESSAGE, "Action requires supervisor");
response.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
@ -310,113 +203,54 @@ public class AppInterceptor implements HandlerInterceptor {
response.setHeader(Constants.MessageInfo.INFO_MESSAGE, "Supervise execution success");
response.setStatus(HttpServletResponse.SC_OK);
return true;
}
}
}
/*
* return true untuk valid permission request ke controller method
*/
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
////// Syamsu /////
// TUTUP DULU PENGGUNAANNYA...
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) {
HandlerMethod hm;
Method method = null;
// int methodApp = AppPermission.VIEW;
Method method;
response.setHeader("Access-Control-Expose-Headers", "RequireSupervisor" + ","
+ Constants.MessageInfo.ERROR_MESSAGE + "," + Constants.MessageInfo.INFO_MESSAGE);
////// Syamsu /////
String AlamatUrlForm = request.getHeader(Constants.HttpHeader.URL_FORM) == null ? "": request.getHeader(Constants.HttpHeader.URL_FORM);
// Buat Om, Kang, Aa Reza terkait Security Role
//String KdRuangan = null;
String KdRuangan = request.getHeader(Constants.HttpHeader.KD_RUANGAN) == null ? "": request.getHeader(Constants.HttpHeader.KD_RUANGAN);
String AlamatUrlForm = request.getHeader(Constants.HttpHeader.URL_FORM) == null ? ""
: request.getHeader(Constants.HttpHeader.URL_FORM);
String KdRuangan = request.getHeader(Constants.HttpHeader.KD_RUANGAN) == null ? ""
: request.getHeader(Constants.HttpHeader.KD_RUANGAN);
int action = AppPermission.VIEW;
if (CommonUtil.isNullOrEmpty(AlamatUrlForm)){
//LOG.warn("Sementara defaultnya di loloskan semuanya di AppInterceptor jika tidak ada header 'AlamatUrlForm' ..");
return true; // Lewatin dulu sementara;
}
if (CommonUtil.isNullOrEmpty(KdRuangan) || "0".equals(KdRuangan)){
LOG.warn("Sementara defaultnya diloloskan semuanya di AppInterceptor jika tidak ada header 'KdRuangan' atau header 'KdRuangan'nya 0 ..");
return true; // Lewatin dulu sementara;
}
//String headerAction = request.getHeader(Constants.HttpHeader.ACTION) == null ? "" : request.getHeader(Constants.HttpHeader.ACTION);
if (CommonUtil.isNullOrEmpty(AlamatUrlForm))
return true;
if (CommonUtil.isNullOrEmpty(KdRuangan) || "0".equals(KdRuangan))
return true;
String URI = request.getRequestURI();
String methodHttp = request.getMethod();
try {
// Alter modified Syamsu
if (handler instanceof org.springframework.web.method.HandlerMethod) {
hm = (HandlerMethod) handler;
method = hm.getMethod();
} else {
return checkAuthSecure(request, response, AlamatUrlForm, true);
}
// AlamatUrlForm // Alter modified Syamsu
boolean usingAnno = method != null && method.isAnnotationPresent(AppPermission.class);
boolean postM = "POST".equals(methodHttp);
boolean signInOut = !URI.contains("auth/sign-in") && !URI.contains("auth/sign-out");
boolean getM = "GET".equals(methodHttp);
boolean cetak = contains (URI, PRINT_PATTERN);
/*(URI.contains("/lap_") || URI.contains("/lap-") || URI.contains("/lap")
|| URI.contains("/cetak_") || URI.contains("/print_") || URI.contains("/cetak-")
|| URI.contains("/print-"));*/
boolean simpan = contains (URI, ADD_PATTERN);
/*(URI.contains("/save_") || URI.contains("/add_") || URI.contains("/simpan_")
|| URI.contains("/save-") || URI.contains("/add-") || URI.contains("/simpan-"));*/
boolean ubah = contains (URI, UPDATE_PATTERN);
/*(URI.contains("/update_") || URI.contains("/edit_") || URI.contains("/ubah_")
|| URI.contains("/update-") || URI.contains("/edit-") || URI.contains("/ubah-"));*/
boolean hapus = contains (URI, DELETE_PATTERN);
/*(URI.contains("/delete_") || URI.contains("/hapus_") || URI.contains("/delete-")
|| URI.contains("/hapus-")); */
boolean cetak = contains(URI, PRINT_PATTERN);
boolean simpan = contains(URI, ADD_PATTERN);
boolean ubah = contains(URI, UPDATE_PATTERN);
boolean hapus = contains(URI, DELETE_PATTERN);
if (usingAnno) {
if (method.getAnnotation(AppPermission.class) != null) {
if (method.getAnnotation(AppPermission.class) != null)
action = method.getAnnotation(AppPermission.class).value();
}
if (AppPermission.SPECIALS == action /* && "#/home".equals(AlamatUrlForm) */) {
if (AppPermission.SPECIALS == action)
return true;
}
}
if (getM && cetak) {
action = AppPermission.PRINT;
// if (headerAction != null && !"".equals(headerAction)) {
// action = headerActionToAction(headerAction);
// }
if (method.getAnnotation(AppPermission.class) != null) {
if (method != null && method.getAnnotation(AppPermission.class) != null)
action = method.getAnnotation(AppPermission.class).value();
}
return checkPermission(request, response, AlamatUrlForm, action);
}
if ((usingAnno || postM) && signInOut) {
if (simpan) {
action = AppPermission.ADD;
} else if (ubah) {
@ -426,345 +260,104 @@ public class AppInterceptor implements HandlerInterceptor {
} else if (cetak) {
action = AppPermission.PRINT;
}
// if (headerAction != null && !"".equals(headerAction)) {
// action = headerActionToAction(headerAction);
// }
if (method.getAnnotation(AppPermission.class) != null) {
if (method != null && method.getAnnotation(AppPermission.class) != null)
action = method.getAnnotation(AppPermission.class).value();
}
return checkPermission(request, response, AlamatUrlForm, action);
}
} catch (Exception e) {
e.printStackTrace();
System.out.println("Not Found " + request.getRequestURL());
LOG.info("Error accured unauthorized");
response.setHeader(Constants.MessageInfo.ERROR_MESSAGE, "Something wrong happened");
response.setHeader("RequireSupervisor", "false");
response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
return false;
}
// TUTUP DULU PENGGUNAANNYA...
return true;
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object obj, ModelAndView mav) throws Exception {}
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object obj, ModelAndView mav) {
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object obj, Exception ex) throws Exception {
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object obj, Exception ex)
throws Exception {
String AlamatUrlForm = request.getHeader(Constants.HttpHeader.URL_FORM) == null ? ""
: request.getHeader(Constants.HttpHeader.URL_FORM);
String KdRuangan = request.getHeader(Constants.HttpHeader.KD_RUANGAN) == null ? ""
: request.getHeader(Constants.HttpHeader.KD_RUANGAN);
String idRuanganTujuan = request.getHeader(Constants.HttpHeader.KD_RUANGAN_T) == null ? ""
: request.getHeader(Constants.HttpHeader.KD_RUANGAN_T);
String idRuanganTujuanA = request.getHeader(Constants.HttpHeader.KD_RUANGAN_A) == null ? ""
: request.getHeader(Constants.HttpHeader.KD_RUANGAN_A);
String tglKirim = request.getHeader(Constants.HttpHeader.TGL_KIRIM) == null ? ""
: request.getHeader(Constants.HttpHeader.TGL_KIRIM);
boolean notHttpOK = response.getStatus() >= HttpServletResponse.SC_BAD_REQUEST;
boolean notLewatMenu = CommonUtil.isNullOrEmpty(AlamatUrlForm) || CommonUtil.isNullOrEmpty(KdRuangan);
Integer ruanganAsalId = 0;
try {
ruanganAsalId = Integer.parseInt(KdRuangan);
}catch(Exception e){
ex = e;
}
Integer ruanganAsalId = Integer.parseInt(KdRuangan);
boolean adaError = CommonUtil.isNotNullOrEmpty(ex);
if (notHttpOK || notLewatMenu || adaError){
if (notHttpOK || notLewatMenu || adaError)
return;
}
Authentication authentication = tokenAuthenticationService.getAuthentication(request);
if (CommonUtil.isNullOrEmpty(authentication)){
if (CommonUtil.isNullOrEmpty(authentication))
return;
}
namaUser = authentication.getName();
loginUser = loginUserDao.findByNamaUser(namaUser);
if (CommonUtil.isNullOrEmpty(loginUser)) {
if (CommonUtil.isNullOrEmpty(loginUser))
return;
}
String potongan = filterUrlForm(AlamatUrlForm);
List<ObjekModulAplikasiVO> objekModulAplikasiVOs = objekModulAplikasiService.findByAlamatUrlForm(potongan);
if (CommonUtil.isNullOrEmpty(objekModulAplikasiVOs)){
if (CommonUtil.isNullOrEmpty(objekModulAplikasiVOs))
return;
}
String URI = request.getRequestURI();
Integer objekModulAplikasId = objekModulAplikasiVOs.get(0).getId();
List<NotifMessagingVO> notifMessagingVOs = notifMessagingService.findByObjekModulAplikasiIdAndUrlBackEndOrUrlBackEndIsNull(objekModulAplikasId, URI);
if (CommonUtil.isNullOrEmpty(notifMessagingVOs)) {
List<NotifMessagingVO> notifMessagingVOs = notifMessagingService
.findByObjekModulAplikasiIdAndUrlBackEndOrUrlBackEndIsNull(objekModulAplikasId, URI);
if (CommonUtil.isNullOrEmpty(notifMessagingVOs))
return;
}
Integer notifMessagingId = notifMessagingVOs.get(0).getId();
if (CommonUtil.isNullOrEmpty(tglKirim)) {
List<Integer> ruanganTujuansId = new ArrayList<>();
System.out.println("--");
if (!"".equals(idRuanganTujuan)){
if (!"".equals(idRuanganTujuan)) {
JSONArray ruanganTujuanIds = new JSONArray(idRuanganTujuan);
for (int i=0; i<ruanganTujuanIds.length(); i++){
for (int i = 0; i < ruanganTujuanIds.length(); i++) {
Integer ruanganTujuanId = ruanganTujuanIds.optInt(i, 0);
ruanganTujuansId.add(ruanganTujuanId);
}
}
}
if (!"".equals(idRuanganTujuanA) && ruanganTujuansId.isEmpty()) {
JSONArray ruanganTujuanIds = new JSONArray(idRuanganTujuanA);
for (int i=0; i<ruanganTujuanIds.length(); i++){
for (int i = 0; i < ruanganTujuanIds.length(); i++) {
Integer ruanganTujuanId = ruanganTujuanIds.optInt(i, 0);
ruanganTujuansId.add(ruanganTujuanId);
}
}
MessagePublisher.RabbitHole rabbitHole = messagePublisher.getRabbitHole();
Pegawai pegawai = loginUser.get(0).getPegawai();
Ruangan ruanganAsal = ruanganDao.findById(ruanganAsalId);
if (ruanganTujuansId.size() > 0){
try{
rabbitHole.sendNotif(rabbitHole, ruanganAsal, pegawai, notifikasiMessageObjekModulService, notifMessagingId, ruanganTujuansId);
}catch(Exception e){
e.printStackTrace();
LOG.info(DateUtil.now()+" send notif dari Ruangan {} dengan ruanganId {} pada notifMessageId {} ada masalah {}",
ruanganAsal.getNamaRuangan(), ruanganAsalId, notifMessagingId, e.getMessage());
}
}
if (!ruanganTujuansId.isEmpty())
rabbitHole.sendNotif(rabbitHole, ruanganAsal, pegawai, notifikasiMessageObjekModulService,
notifMessagingId, ruanganTujuansId);
} else {
JSONArray tglKirims = new JSONArray(tglKirim);
JSONArray ruanganTujuanIds = new JSONArray(idRuanganTujuan);
SimpleDateFormat myFormat = new SimpleDateFormat("yyyy-MM-dd");
for (int i=0; i<tglKirims.length(); i++){
for (int i = 0; i < tglKirims.length(); i++) {
String ctglKirim = tglKirims.optString(i, "");
Integer cRuanganTujuanId = ruanganTujuanIds.optInt(i,0);
Integer cRuanganTujuanId = ruanganTujuanIds.optInt(i, 0);
Date date = myFormat.parse(ctglKirim);
NotifMessagingSchedulerVO vo = new NotifMessagingSchedulerVO();
vo.setTglKirim(date);
vo.setTerkirim(false);
vo.setNotifMessagingId(notifMessagingId);
vo.setRuanganIdAsal(ruanganAsalId);
vo.setRuanganIdTujuan(cRuanganTujuanId);
vo.setPegawaiId(loginUser.get(0).getPegawai().getId());
vo.setKdProfile((short)0);
vo.setKdProfile((short) 0);
vo.setKodeExternal("");
vo.setNamaExternal("");
vo.setReportDisplay("");
vo.setStatusEnabled(true);
notifMessagingSchedulerService.add(vo);
}
}
}
// <T extends BaseMasterVO> T convertToVO(T t, Object o){
// BeanUtils.copyProperties(t, o);
// return t;
// }
// try{
//
//
// String AlamatUrlForm =
// request.getHeader(Constants.HttpHeader.URL_FORM) == null ? "" :
// request.getHeader(Constants.HttpHeader.URL_FORM);
// String KdRuangan = request.getHeader(Constants.HttpHeader.KD_RUANGAN)
// == null ? "" : request.getHeader(Constants.HttpHeader.KD_RUANGAN);
//
// Authentication authentication =
// tokenAuthenticationService.getAuthentication(request);
//
// namaUser = authentication.getName();
// loginUser = loginUserDao.findByNamaUser(namaUser);
//
//
// if (loginUser.isEmpty()) {
// publisher.BroadcastMessage(KdRuangan, namaUser, AlamatUrlForm);
// }
//
//
//
//
//// String routingKeyAndQueueName = "ruanganId." + KdRuangan;
////
//// publisher.sendRabbitMQNotification("127.0.0.1", "ruanganId." +
// KdRuangan, "Kd Ruangan : " + KdRuangan + ", AlamatUrlForm : " +
// AlamatUrlForm);
////
//// subscriber.startRabbitMQNotification("127.0.0.1",
// routingKeyAndQueueName);
//// subscriber.listenRabbitMQNotification(routingKeyAndQueueName,
// subscriber.getDefaultConsumer(), false);
//// subscriber.stopRabbitMQNotification();
//
// }catch(Exception e){
// //e.printStackTrace();
// }
// //String urlSocket = messagePublisher.GetSettingDataFixed("UrlRabbitMQMessaging"); sementara kunci dulu.
//
// String urlSocket = "127.0.0.1";
//
// List<NotifikasiMessageObjekModulVO> notifikasiMessageObjekModulVOs = notifikasiMessageObjekModulService.findByNotifMessagingIdAndRuanganId(notifMessagingId, ruanganTujuansId);
//
// if (CommonUtil.isNullOrEmpty(notifikasiMessageObjekModulVOs)) {
// return;
// }
//
// Integer ruanganIdtemp = 0;
// boolean connect = false;
//
// for (NotifikasiMessageObjekModulVO vo : notifikasiMessageObjekModulVOs){
// Ruangan ruangan = vo.getRuangan();
// ModulAplikasi modulAplikasi = vo.getModulAplikasi();
// ObjekModulAplikasi objekModulAplikasi = vo.getObjekModulAplikasi();
// String customURLObjekModul = vo.getCustomURLObjekModul();
// String titleNotifikasi = vo.getTitleNotifikasi();
// String pesanNotifikasi = vo.getPesanNotifikasi();
// String namaFungsiFrontEnd = vo.getNamaFungsiFrontEnd();
//
// if (ruangan.getId() == ruanganId){
// continue;
// }
//
// RuanganVO dariRuangan = ruanganService.findById(ruanganId);
//
// if (ruanganIdtemp != ruangan.getId()){
// if (connect){
// rabbitHole.close();
// }
// rabbitHole.connect(urlSocket, String.valueOf(ruangan.getId()));
// connect = true;
// ruanganIdtemp = ruangan.getId();
// }
//
// Map<String, Object> map = new HashMap<>();
// map.put("title", titleNotifikasi);
// map.put("dariRuangan", dariRuangan);
// map.put("ruanganId", ruangan.getId());
// map.put("ruangan", convertToVO(new RuanganVO(), ruangan));
// map.put("modulAplikasi", convertToVO(new ModulAplikasiVO(), modulAplikasi));
// map.put("objekModulAplikasi", convertToVO(new ObjekModulAplikasiVO(), objekModulAplikasi));
// map.put("titleNotifikasi", titleNotifikasi);
// map.put("pesanNotifikasi", pesanNotifikasi);
// map.put("namaFungsiFrontEnd", namaFungsiFrontEnd);
// map.put("fromPegawai", loginUser.get(0).getPegawai());
// map.put("urlForm",CommonUtil.isNullOrEmpty(customURLObjekModul)? objekModulAplikasi.getAlamatUrlForm() : customURLObjekModul);
//
// rabbitHole.sendRabbitMQNotification(gson.toJson(map));
//
// //messagePublisher.BroadcastMessage(map);
// }
// if (connect){
// rabbitHole.close();
// }
// private static final TypeAdapterFactory FACTORY = new TypeAdapterFactory() {
// @Override
// @SuppressWarnings("unchecked")
// public <T> TypeAdapter<T> create(Gson gson, TypeToken<T> type) {
// return (HibernateProxy.class.isAssignableFrom(type.getRawType())
// ? (TypeAdapter<T>) new HibernateProxyTypeAdapter((TypeAdapter)gson.getAdapter(TypeToken.get(type.getRawType().getSuperclass())))
// : null);
// }
// };
//
//
// private static final class HibernateProxyTypeAdapter extends TypeAdapter<HibernateProxy> {
//
// private final TypeAdapter<Object> delegate;
//
// private HibernateProxyTypeAdapter(TypeAdapter<Object> delegate) {
// this.delegate = delegate;
// }
//
// @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;
// }
//
//
//
// delegate.write(out, ((HibernateProxy) value).getHibernateLazyInitializer().getImplementation());
// }
// }
}
/*
* else if (method.isAnnotationPresent(AppMenuPermision.class)){
*
* Authentication authentication =
* tokenAuthenticationService.getAuthentication(request);
*
* String namaUser = authentication.getName();
*
* List<LoginUser> loginUser =
* loginUserDao.findByNamaUser(namaUser);
*
* if (loginUser.isEmpty()) { // untuk testing false
* response.addHeader("Access-Control-Expose-Headers",
* "content-type");
* response.setHeader(Constants.MessageInfo.ERROR_MESSAGE, "User " +
* namaUser + " can not access current menu ");
* response.setStatus(HttpServletResponse.SC_UNAUTHORIZED); return
* false; }
*
* // get user login if (!loginUser.isEmpty()) { LoginUser user =
* loginUser.get(0); }else{ LOG.info("User {} is unauthorized",
* namaUser);
* response.setHeader(Constants.MessageInfo.ERROR_MESSAGE,
* "User is unauthorized");
* response.setStatus(HttpServletResponse.SC_UNAUTHORIZED); return
* false; } }
*/
}

View File

@ -102,7 +102,6 @@
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>${commons-io.version}</version>
<scope>runtime</scope>
</dependency>
<!-- For testing REST -->
@ -202,6 +201,16 @@
<groupId>net.sf.jasperreports</groupId>
<artifactId>jasperreports</artifactId>
<version>6.11.0</version>
<exclusions>
<exclusion>
<groupId>com.lowagie</groupId>
<artifactId>itext</artifactId>
</exclusion>
<exclusion>
<groupId>org.olap4j</groupId>
<artifactId>olap4j</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>

View File

@ -1,70 +1,49 @@
package com.jasamedika.medifirst2000.interceptor;
import java.lang.reflect.Method;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.jasamedika.medifirst2000.constants.Constants;
import com.jasamedika.medifirst2000.dao.LoginUserDao;
import com.jasamedika.medifirst2000.dao.RuanganDao;
import com.jasamedika.medifirst2000.entities.*;
import com.jasamedika.medifirst2000.notification.MessagePublisher;
import com.jasamedika.medifirst2000.security.model.AppPermission;
import com.jasamedika.medifirst2000.security.service.TokenAuthenticationService;
import com.jasamedika.medifirst2000.service.*;
import com.jasamedika.medifirst2000.util.CommonUtil;
import com.jasamedika.medifirst2000.vo.NotifMessagingSchedulerVO;
import com.jasamedika.medifirst2000.vo.NotifMessagingVO;
import com.jasamedika.medifirst2000.vo.NotifikasiMessageObjekModulVO;
import com.jasamedika.medifirst2000.vo.ObjekModulAplikasiVO;
import org.apache.commons.lang3.ArrayUtils;
import org.json.JSONArray;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.core.Authentication;
import org.springframework.web.method.HandlerMethod;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
import com.jasamedika.medifirst2000.constants.Constants;
import com.jasamedika.medifirst2000.dao.LoginUserDao;
import com.jasamedika.medifirst2000.dao.NotifikasiMessageObjekModulDao;
import com.jasamedika.medifirst2000.dao.RuanganDao;
import com.jasamedika.medifirst2000.entities.KelompokUser;
import com.jasamedika.medifirst2000.entities.LoginUser;
import com.jasamedika.medifirst2000.entities.MapObjekModulToKelompokUser;
import com.jasamedika.medifirst2000.entities.MapObjekModulToLoginUser;
import com.jasamedika.medifirst2000.entities.Pegawai;
import com.jasamedika.medifirst2000.entities.Ruangan;
import com.jasamedika.medifirst2000.notification.MessagePublisher;
import com.jasamedika.medifirst2000.notification.MessageSubscriber;
import com.jasamedika.medifirst2000.security.model.AppPermission;
import com.jasamedika.medifirst2000.security.service.TokenAuthenticationService;
import com.jasamedika.medifirst2000.service.MapObjekModulToKelompokUserService;
import com.jasamedika.medifirst2000.service.MapObjekModulToLoginUserService;
import com.jasamedika.medifirst2000.service.NotifMessagingSchedulerService;
import com.jasamedika.medifirst2000.service.NotifMessagingService;
import com.jasamedika.medifirst2000.service.NotifikasiMessageObjekModulService;
import com.jasamedika.medifirst2000.service.ObjekModulAplikasiService;
import com.jasamedika.medifirst2000.util.CommonUtil;
import com.jasamedika.medifirst2000.util.DateUtil;
import com.jasamedika.medifirst2000.vo.NotifMessagingSchedulerVO;
import com.jasamedika.medifirst2000.vo.NotifMessagingVO;
import com.jasamedika.medifirst2000.vo.NotifikasiMessageObjekModulVO;
import com.jasamedika.medifirst2000.vo.ObjekModulAplikasiVO;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.lang.reflect.Method;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
/**
* Interceptor class for All annotation method controller @AppPermission
*
* @author Roberto
*
* direka ulang oleh Syamsu
* @author Roberto, direka ulang oleh Syamsu
*/
public class AppInterceptor implements HandlerInterceptor {
private static final String[] PRINT_PATTERN = {"/lap_", "/lap-", "/lap", "/cetak_", "/cetak-", "/print_", "/print-" };
private static final String[] ADD_PATTERN = {"/save_", "/save-", "/add_", "/add-", "/simpan_", "/simpan-"};
private static final String[] UPDATE_PATTERN = {"/update_", "/update-", "/edit_", "/edit-", "/ubah_", "/ubah-"};
private static final String[] PRINT_PATTERN = { "/lap_", "/lap-", "/lap", "/cetak_", "/cetak-", "/print_",
"/print-" };
private static final String[] DELETE_PATTERN = {"/delete_", "/delete-", "/hapus_", "/hapus-"};
private static final String[] ADD_PATTERN = { "/save_", "/save-", "/add_", "/add-", "/simpan_", "/simpan-" };
private final Logger LOG = LoggerFactory.getLogger(AppInterceptor.class);
private static final String[] UPDATE_PATTERN = { "/update_", "/update-", "/edit_", "/edit-", "/ubah_", "/ubah-" };
private static final String[] DELETE_PATTERN = { "/delete_", "/delete-", "/hapus_", "/hapus-" };
@Autowired
private TokenAuthenticationService tokenAuthenticationService;
@ -74,101 +53,55 @@ public class AppInterceptor implements HandlerInterceptor {
@Autowired
private MapObjekModulToKelompokUserService mapObjekModulToKelompokUserService;
@Autowired
private MapObjekModulToLoginUserService mapObjekModulToLoginUserService;
@Autowired
private ObjekModulAplikasiService<ObjekModulAplikasiVO> objekModulAplikasiService;
@Autowired
MessagePublisher<String, Object> messagePublisher;
@Autowired
MessageSubscriber messageSubscriber;
@Autowired
NotifMessagingService<NotifMessagingVO> notifMessagingService;
@Autowired
NotifikasiMessageObjekModulService<NotifikasiMessageObjekModulVO> notifikasiMessageObjekModulService;
@Autowired
NotifMessagingSchedulerService<NotifMessagingSchedulerVO> notifMessagingSchedulerService;
@Autowired
NotifikasiMessageObjekModulDao notifikasiModulMessageDao;
@Autowired
RuanganDao ruanganDao;
List<LoginUser> loginUser;
String namaUser;
// private int headerActionToAction(String action){
// if ("save".equals(action)){
// return AppPermission.ADD;
// } else if ("edit".equals(action)){
// return AppPermission.UPDATE;
// } else if ("delete".equals(action)){
// return AppPermission.DELETE;
// } else if ("print".equals(action)){
// return AppPermission.PRINT;
// } else {
// return AppPermission.VIEW;
// }
// }
private boolean contains(String source, String[] matchers){
if (CommonUtil.isNullOrEmpty(source) || ArrayUtils.isEmpty(matchers)){
private boolean contains(String source, String[] matchers) {
if (CommonUtil.isNullOrEmpty(source) || ArrayUtils.isEmpty(matchers))
return false;
}
for (int i=0;i<matchers.length; i++){
if (source.contains(matchers[i])){
for (String matcher : matchers)
if (source.contains(matcher))
return true;
}
}
return false;
}
private String filterUrlForm(String urlForm){
private String filterUrlForm(String urlForm) {
String[] hasil = urlForm.split("/");
System.out.println(hasil.length);
StringBuilder potongan = new StringBuilder();
for (int i=0; i<hasil.length && i<3; i++){
for (int i = 0; i < hasil.length && i < 3; i++)
potongan.append(hasil[i]).append("/");
}
// String current = urlForm;
// int pos = 0;
// int cpos = -1;
// for (int i=0; i<4; i++){
// pos = current.indexOf('/',pos+1);
// if (pos > 0){
// cpos = pos;
// }else{
// break;
// }
// }
// String oye = urlForm.substring(0, cpos);
return potongan.toString();
}
private boolean checkAuthSecure(HttpServletRequest request, HttpServletResponse response, String AlamatUrlForm, boolean supervisi) throws Exception {
private boolean checkAuthSecure(HttpServletRequest request, HttpServletResponse response, String AlamatUrlForm,
boolean supervisi) throws Exception {
Authentication authentication = tokenAuthenticationService.getAuthentication(request);
namaUser = authentication.getName();
loginUser = loginUserDao.findByNamaUser(namaUser);
if (CommonUtil.isNullOrEmpty(loginUser)) {
LOG.info("Empty login user");
response.setHeader("RequireSupervisor", "false");
response.setHeader(Constants.MessageInfo.ERROR_MESSAGE, "Empty login user");
response.setStatus(HttpServletResponse.SC_FORBIDDEN);
@ -176,132 +109,92 @@ public class AppInterceptor implements HandlerInterceptor {
}
return true;
}
private int checkUserPermision(LoginUser user, ObjekModulAplikasiVO objekModulAplikasiVO, int action){
private int checkUserPermision(LoginUser user, ObjekModulAplikasiVO objekModulAplikasiVO, int action) {
int result = -1;
MapObjekModulToLoginUser modul = mapObjekModulToLoginUserService.findByObjekModulAplikasi(objekModulAplikasiVO.getId(), user.getId());
MapObjekModulToLoginUser modul = mapObjekModulToLoginUserService
.findByObjekModulAplikasi(objekModulAplikasiVO.getId(), user.getId());
if (modul != null) {
LOG.info("Module security match");
result = 0;
switch (action) {
case AppPermission.ADD:
if (modul.getSimpan()){
result = 1;
}
break;
case AppPermission.UPDATE:
if (modul.getEdit()){
result = 1;
}
break;
case AppPermission.DELETE:
if (modul.getHapus()){
result = 1;
}
break;
case AppPermission.PRINT:
if (modul.getCetak()){
result = 1;
}
break;
case AppPermission.ADD:
if (modul.getSimpan())
result = 1;
break;
case AppPermission.UPDATE:
if (modul.getEdit())
result = 1;
break;
case AppPermission.DELETE:
if (modul.getHapus())
result = 1;
break;
case AppPermission.PRINT:
if (modul.getCetak())
result = 1;
break;
}
}
return result;
}
private int checkKelompokUserPermision(LoginUser user, ObjekModulAplikasiVO objekModulAplikasiVO, int action){
private int checkKelompokUserPermision(LoginUser user, ObjekModulAplikasiVO objekModulAplikasiVO, int action) {
KelompokUser role = user.getKelompokUser();
int result = -2;
if (role != null) {
MapObjekModulToKelompokUser modul = mapObjekModulToKelompokUserService.findByObjekModulAplikasi(objekModulAplikasiVO.getId(), role.getId());
MapObjekModulToKelompokUser modul = mapObjekModulToKelompokUserService
.findByObjekModulAplikasi(objekModulAplikasiVO.getId(), role.getId());
result = -1;
if (modul != null) {
LOG.info("Module security match");
result = 0;
switch (action) {
case AppPermission.ADD:
if (modul.getSimpan()){
result = 1;
}
break;
case AppPermission.UPDATE:
if (modul.getEdit()){
result = 1;
}
break;
case AppPermission.DELETE:
if (modul.getHapus()){
result = 1;
}
break;
case AppPermission.PRINT:
if (modul.getCetak()){
result = 1;
}
break;
case AppPermission.ADD:
if (modul.getSimpan())
result = 1;
break;
case AppPermission.UPDATE:
if (modul.getEdit())
result = 1;
break;
case AppPermission.DELETE:
if (modul.getHapus())
result = 1;
break;
case AppPermission.PRINT:
if (modul.getCetak())
result = 1;
break;
}
}
}
return result;
}
private boolean checkPermission(HttpServletRequest request, HttpServletResponse response, String AlamatUrlForm, int action) throws Exception {
// Alter modified Syamsu
List<ObjekModulAplikasiVO> objekModulAplikasi = objekModulAplikasiService.findByAlamatUrlForm(filterUrlForm(AlamatUrlForm));
if (CommonUtil.isNullOrEmpty(objekModulAplikasi)){
LOG.warn(AlamatUrlForm + " : Sementara defaultnya diloloskan semuanya di AppInterceptor jika tidak ada di dalam daftar objek modul aplikasi..");
return true; // Defaultnya diloloskan semuanya...
}
if (!checkAuthSecure(request, response, AlamatUrlForm, false)) {
private boolean checkPermission(HttpServletRequest request, HttpServletResponse response, String AlamatUrlForm,
int action) throws Exception {
List<ObjekModulAplikasiVO> objekModulAplikasi = objekModulAplikasiService
.findByAlamatUrlForm(filterUrlForm(AlamatUrlForm));
if (CommonUtil.isNullOrEmpty(objekModulAplikasi))
return true;
if (!checkAuthSecure(request, response, AlamatUrlForm, false))
return false;
}
int resultUser = checkUserPermision(loginUser.get(0), objekModulAplikasi.get(0), action);
if (resultUser == 0){
LOG.info("User {} has need superVisor for action in {} module application", namaUser, action);
if (resultUser == 0) {
response.setHeader("RequireSupervisor", "true");
response.setHeader(Constants.MessageInfo.ERROR_MESSAGE, "Action requires supervisor");
response.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
return false;
} else if (resultUser == 1){
} else if (resultUser == 1) {
response.setHeader(Constants.MessageInfo.INFO_MESSAGE, "Supervise execution success");
response.setStatus(HttpServletResponse.SC_OK);
return true;
}
}
int resultKelompokUser = checkKelompokUserPermision(loginUser.get(0), objekModulAplikasi.get(0), action);
if (resultKelompokUser == -2){
LOG.warn("Sementara defaultnya diloloskan semuanya di AppInterceptor jika tidak ada di dalam daftar kelompok user..");
return true; // Defaultnya diloloskan semuanya...
// LOG.info("User {} has no role to gain access restricted area", namaUser);
// response.setHeader("RequireSupervisor", "false");
// response.setHeader(Constants.MessageInfo.ERROR_MESSAGE,
// "User " + namaUser + " has no role to gain access restricted area");
// response.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
// return false;
} else if (resultKelompokUser == -1){
LOG.warn("Sementara defaultnya diloloskan semuanya di AppInterceptor jika tidak ada di dalam daftar Map objek modul to kelompok user..");
return true; // Defaultnya diloloskan semuanya...
// LOG.info("User {} has no access to module application", namaUser);
// response.setHeader("RequireSupervisor", "false");
// response.setHeader(Constants.MessageInfo.ERROR_MESSAGE,
// "User " + namaUser + " has no access to module application");
// response.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
// return false;
} else if (resultKelompokUser == 0) {
LOG.info("User {} has need superVisor for action in {} module application", namaUser, action);
if (resultKelompokUser == -2) {
return true;
} else if (resultKelompokUser == -1) {
return true;
} else if (resultKelompokUser == 0) {
response.setHeader("RequireSupervisor", "true");
response.setHeader(Constants.MessageInfo.ERROR_MESSAGE, "Action requires supervisor");
response.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
@ -310,113 +203,54 @@ public class AppInterceptor implements HandlerInterceptor {
response.setHeader(Constants.MessageInfo.INFO_MESSAGE, "Supervise execution success");
response.setStatus(HttpServletResponse.SC_OK);
return true;
}
}
}
/*
* return true untuk valid permission request ke controller method
*/
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
////// Syamsu /////
// TUTUP DULU PENGGUNAANNYA...
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) {
HandlerMethod hm;
Method method = null;
// int methodApp = AppPermission.VIEW;
Method method;
response.setHeader("Access-Control-Expose-Headers", "RequireSupervisor" + ","
+ Constants.MessageInfo.ERROR_MESSAGE + "," + Constants.MessageInfo.INFO_MESSAGE);
////// Syamsu /////
String AlamatUrlForm = request.getHeader(Constants.HttpHeader.URL_FORM) == null ? "": request.getHeader(Constants.HttpHeader.URL_FORM);
// Buat Om, Kang, Aa Reza terkait Security Role
//String KdRuangan = null;
String KdRuangan = request.getHeader(Constants.HttpHeader.KD_RUANGAN) == null ? "": request.getHeader(Constants.HttpHeader.KD_RUANGAN);
String AlamatUrlForm = request.getHeader(Constants.HttpHeader.URL_FORM) == null ? ""
: request.getHeader(Constants.HttpHeader.URL_FORM);
String KdRuangan = request.getHeader(Constants.HttpHeader.KD_RUANGAN) == null ? ""
: request.getHeader(Constants.HttpHeader.KD_RUANGAN);
int action = AppPermission.VIEW;
if (CommonUtil.isNullOrEmpty(AlamatUrlForm)){
//LOG.warn("Sementara defaultnya di loloskan semuanya di AppInterceptor jika tidak ada header 'AlamatUrlForm' ..");
return true; // Lewatin dulu sementara;
}
if (CommonUtil.isNullOrEmpty(KdRuangan) || "0".equals(KdRuangan)){
LOG.warn("Sementara defaultnya diloloskan semuanya di AppInterceptor jika tidak ada header 'KdRuangan' atau header 'KdRuangan'nya 0 ..");
return true; // Lewatin dulu sementara;
}
//String headerAction = request.getHeader(Constants.HttpHeader.ACTION) == null ? "" : request.getHeader(Constants.HttpHeader.ACTION);
if (CommonUtil.isNullOrEmpty(AlamatUrlForm))
return true;
if (CommonUtil.isNullOrEmpty(KdRuangan) || "0".equals(KdRuangan))
return true;
String URI = request.getRequestURI();
String methodHttp = request.getMethod();
try {
// Alter modified Syamsu
if (handler instanceof org.springframework.web.method.HandlerMethod) {
hm = (HandlerMethod) handler;
method = hm.getMethod();
} else {
return checkAuthSecure(request, response, AlamatUrlForm, true);
}
// AlamatUrlForm // Alter modified Syamsu
boolean usingAnno = method != null && method.isAnnotationPresent(AppPermission.class);
boolean postM = "POST".equals(methodHttp);
boolean signInOut = !URI.contains("auth/sign-in") && !URI.contains("auth/sign-out");
boolean getM = "GET".equals(methodHttp);
boolean cetak = contains (URI, PRINT_PATTERN);
/*(URI.contains("/lap_") || URI.contains("/lap-") || URI.contains("/lap")
|| URI.contains("/cetak_") || URI.contains("/print_") || URI.contains("/cetak-")
|| URI.contains("/print-"));*/
boolean simpan = contains (URI, ADD_PATTERN);
/*(URI.contains("/save_") || URI.contains("/add_") || URI.contains("/simpan_")
|| URI.contains("/save-") || URI.contains("/add-") || URI.contains("/simpan-"));*/
boolean ubah = contains (URI, UPDATE_PATTERN);
/*(URI.contains("/update_") || URI.contains("/edit_") || URI.contains("/ubah_")
|| URI.contains("/update-") || URI.contains("/edit-") || URI.contains("/ubah-"));*/
boolean hapus = contains (URI, DELETE_PATTERN);
/*(URI.contains("/delete_") || URI.contains("/hapus_") || URI.contains("/delete-")
|| URI.contains("/hapus-")); */
boolean cetak = contains(URI, PRINT_PATTERN);
boolean simpan = contains(URI, ADD_PATTERN);
boolean ubah = contains(URI, UPDATE_PATTERN);
boolean hapus = contains(URI, DELETE_PATTERN);
if (usingAnno) {
if (method.getAnnotation(AppPermission.class) != null) {
if (method.getAnnotation(AppPermission.class) != null)
action = method.getAnnotation(AppPermission.class).value();
}
if (AppPermission.SPECIALS == action /* && "#/home".equals(AlamatUrlForm) */) {
if (AppPermission.SPECIALS == action)
return true;
}
}
if (getM && cetak) {
action = AppPermission.PRINT;
// if (headerAction != null && !"".equals(headerAction)) {
// action = headerActionToAction(headerAction);
// }
if (method.getAnnotation(AppPermission.class) != null) {
if (method != null && method.getAnnotation(AppPermission.class) != null)
action = method.getAnnotation(AppPermission.class).value();
}
return checkPermission(request, response, AlamatUrlForm, action);
}
if ((usingAnno || postM) && signInOut) {
if (simpan) {
action = AppPermission.ADD;
} else if (ubah) {
@ -426,345 +260,104 @@ public class AppInterceptor implements HandlerInterceptor {
} else if (cetak) {
action = AppPermission.PRINT;
}
// if (headerAction != null && !"".equals(headerAction)) {
// action = headerActionToAction(headerAction);
// }
if (method.getAnnotation(AppPermission.class) != null) {
if (method != null && method.getAnnotation(AppPermission.class) != null)
action = method.getAnnotation(AppPermission.class).value();
}
return checkPermission(request, response, AlamatUrlForm, action);
}
} catch (Exception e) {
e.printStackTrace();
System.out.println("Not Found " + request.getRequestURL());
LOG.info("Error accured unauthorized");
response.setHeader(Constants.MessageInfo.ERROR_MESSAGE, "Something wrong happened");
response.setHeader("RequireSupervisor", "false");
response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
return false;
}
// TUTUP DULU PENGGUNAANNYA...
return true;
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object obj, ModelAndView mav) throws Exception {}
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object obj, ModelAndView mav) {
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object obj, Exception ex) throws Exception {
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object obj, Exception ex)
throws Exception {
String AlamatUrlForm = request.getHeader(Constants.HttpHeader.URL_FORM) == null ? ""
: request.getHeader(Constants.HttpHeader.URL_FORM);
String KdRuangan = request.getHeader(Constants.HttpHeader.KD_RUANGAN) == null ? ""
: request.getHeader(Constants.HttpHeader.KD_RUANGAN);
String idRuanganTujuan = request.getHeader(Constants.HttpHeader.KD_RUANGAN_T) == null ? ""
: request.getHeader(Constants.HttpHeader.KD_RUANGAN_T);
String idRuanganTujuanA = request.getHeader(Constants.HttpHeader.KD_RUANGAN_A) == null ? ""
: request.getHeader(Constants.HttpHeader.KD_RUANGAN_A);
String tglKirim = request.getHeader(Constants.HttpHeader.TGL_KIRIM) == null ? ""
: request.getHeader(Constants.HttpHeader.TGL_KIRIM);
boolean notHttpOK = response.getStatus() >= HttpServletResponse.SC_BAD_REQUEST;
boolean notLewatMenu = CommonUtil.isNullOrEmpty(AlamatUrlForm) || CommonUtil.isNullOrEmpty(KdRuangan);
Integer ruanganAsalId = 0;
try {
ruanganAsalId = Integer.parseInt(KdRuangan);
}catch(Exception e){
ex = e;
}
Integer ruanganAsalId = Integer.parseInt(KdRuangan);
boolean adaError = CommonUtil.isNotNullOrEmpty(ex);
if (notHttpOK || notLewatMenu || adaError){
if (notHttpOK || notLewatMenu || adaError)
return;
}
Authentication authentication = tokenAuthenticationService.getAuthentication(request);
if (CommonUtil.isNullOrEmpty(authentication)){
if (CommonUtil.isNullOrEmpty(authentication))
return;
}
namaUser = authentication.getName();
loginUser = loginUserDao.findByNamaUser(namaUser);
if (CommonUtil.isNullOrEmpty(loginUser)) {
if (CommonUtil.isNullOrEmpty(loginUser))
return;
}
String potongan = filterUrlForm(AlamatUrlForm);
List<ObjekModulAplikasiVO> objekModulAplikasiVOs = objekModulAplikasiService.findByAlamatUrlForm(potongan);
if (CommonUtil.isNullOrEmpty(objekModulAplikasiVOs)){
if (CommonUtil.isNullOrEmpty(objekModulAplikasiVOs))
return;
}
String URI = request.getRequestURI();
Integer objekModulAplikasId = objekModulAplikasiVOs.get(0).getId();
List<NotifMessagingVO> notifMessagingVOs = notifMessagingService.findByObjekModulAplikasiIdAndUrlBackEndOrUrlBackEndIsNull(objekModulAplikasId, URI);
if (CommonUtil.isNullOrEmpty(notifMessagingVOs)) {
List<NotifMessagingVO> notifMessagingVOs = notifMessagingService
.findByObjekModulAplikasiIdAndUrlBackEndOrUrlBackEndIsNull(objekModulAplikasId, URI);
if (CommonUtil.isNullOrEmpty(notifMessagingVOs))
return;
}
Integer notifMessagingId = notifMessagingVOs.get(0).getId();
if (CommonUtil.isNullOrEmpty(tglKirim)) {
List<Integer> ruanganTujuansId = new ArrayList<>();
System.out.println("--");
if (!"".equals(idRuanganTujuan)){
if (!"".equals(idRuanganTujuan)) {
JSONArray ruanganTujuanIds = new JSONArray(idRuanganTujuan);
for (int i=0; i<ruanganTujuanIds.length(); i++){
for (int i = 0; i < ruanganTujuanIds.length(); i++) {
Integer ruanganTujuanId = ruanganTujuanIds.optInt(i, 0);
ruanganTujuansId.add(ruanganTujuanId);
}
}
}
if (!"".equals(idRuanganTujuanA) && ruanganTujuansId.isEmpty()) {
JSONArray ruanganTujuanIds = new JSONArray(idRuanganTujuanA);
for (int i=0; i<ruanganTujuanIds.length(); i++){
for (int i = 0; i < ruanganTujuanIds.length(); i++) {
Integer ruanganTujuanId = ruanganTujuanIds.optInt(i, 0);
ruanganTujuansId.add(ruanganTujuanId);
}
}
MessagePublisher.RabbitHole rabbitHole = messagePublisher.getRabbitHole();
Pegawai pegawai = loginUser.get(0).getPegawai();
Ruangan ruanganAsal = ruanganDao.findById(ruanganAsalId);
if (ruanganTujuansId.size() > 0){
try{
rabbitHole.sendNotif(rabbitHole, ruanganAsal, pegawai, notifikasiMessageObjekModulService, notifMessagingId, ruanganTujuansId);
}catch(Exception e){
e.printStackTrace();
LOG.info(DateUtil.now()+" send notif dari Ruangan {} dengan ruanganId {} pada notifMessageId {} ada masalah {}",
ruanganAsal.getNamaRuangan(), ruanganAsalId, notifMessagingId, e.getMessage());
}
}
if (!ruanganTujuansId.isEmpty())
rabbitHole.sendNotif(rabbitHole, ruanganAsal, pegawai, notifikasiMessageObjekModulService,
notifMessagingId, ruanganTujuansId);
} else {
JSONArray tglKirims = new JSONArray(tglKirim);
JSONArray ruanganTujuanIds = new JSONArray(idRuanganTujuan);
SimpleDateFormat myFormat = new SimpleDateFormat("yyyy-MM-dd");
for (int i=0; i<tglKirims.length(); i++){
for (int i = 0; i < tglKirims.length(); i++) {
String ctglKirim = tglKirims.optString(i, "");
Integer cRuanganTujuanId = ruanganTujuanIds.optInt(i,0);
Integer cRuanganTujuanId = ruanganTujuanIds.optInt(i, 0);
Date date = myFormat.parse(ctglKirim);
NotifMessagingSchedulerVO vo = new NotifMessagingSchedulerVO();
vo.setTglKirim(date);
vo.setTerkirim(false);
vo.setNotifMessagingId(notifMessagingId);
vo.setRuanganIdAsal(ruanganAsalId);
vo.setRuanganIdTujuan(cRuanganTujuanId);
vo.setPegawaiId(loginUser.get(0).getPegawai().getId());
vo.setKdProfile((short)0);
vo.setKdProfile((short) 0);
vo.setKodeExternal("");
vo.setNamaExternal("");
vo.setReportDisplay("");
vo.setStatusEnabled(true);
notifMessagingSchedulerService.add(vo);
}
}
}
// <T extends BaseMasterVO> T convertToVO(T t, Object o){
// BeanUtils.copyProperties(t, o);
// return t;
// }
// try{
//
//
// String AlamatUrlForm =
// request.getHeader(Constants.HttpHeader.URL_FORM) == null ? "" :
// request.getHeader(Constants.HttpHeader.URL_FORM);
// String KdRuangan = request.getHeader(Constants.HttpHeader.KD_RUANGAN)
// == null ? "" : request.getHeader(Constants.HttpHeader.KD_RUANGAN);
//
// Authentication authentication =
// tokenAuthenticationService.getAuthentication(request);
//
// namaUser = authentication.getName();
// loginUser = loginUserDao.findByNamaUser(namaUser);
//
//
// if (loginUser.isEmpty()) {
// publisher.BroadcastMessage(KdRuangan, namaUser, AlamatUrlForm);
// }
//
//
//
//
//// String routingKeyAndQueueName = "ruanganId." + KdRuangan;
////
//// publisher.sendRabbitMQNotification("127.0.0.1", "ruanganId." +
// KdRuangan, "Kd Ruangan : " + KdRuangan + ", AlamatUrlForm : " +
// AlamatUrlForm);
////
//// subscriber.startRabbitMQNotification("127.0.0.1",
// routingKeyAndQueueName);
//// subscriber.listenRabbitMQNotification(routingKeyAndQueueName,
// subscriber.getDefaultConsumer(), false);
//// subscriber.stopRabbitMQNotification();
//
// }catch(Exception e){
// //e.printStackTrace();
// }
// //String urlSocket = messagePublisher.GetSettingDataFixed("UrlRabbitMQMessaging"); sementara kunci dulu.
//
// String urlSocket = "127.0.0.1";
//
// List<NotifikasiMessageObjekModulVO> notifikasiMessageObjekModulVOs = notifikasiMessageObjekModulService.findByNotifMessagingIdAndRuanganId(notifMessagingId, ruanganTujuansId);
//
// if (CommonUtil.isNullOrEmpty(notifikasiMessageObjekModulVOs)) {
// return;
// }
//
// Integer ruanganIdtemp = 0;
// boolean connect = false;
//
// for (NotifikasiMessageObjekModulVO vo : notifikasiMessageObjekModulVOs){
// Ruangan ruangan = vo.getRuangan();
// ModulAplikasi modulAplikasi = vo.getModulAplikasi();
// ObjekModulAplikasi objekModulAplikasi = vo.getObjekModulAplikasi();
// String customURLObjekModul = vo.getCustomURLObjekModul();
// String titleNotifikasi = vo.getTitleNotifikasi();
// String pesanNotifikasi = vo.getPesanNotifikasi();
// String namaFungsiFrontEnd = vo.getNamaFungsiFrontEnd();
//
// if (ruangan.getId() == ruanganId){
// continue;
// }
//
// RuanganVO dariRuangan = ruanganService.findById(ruanganId);
//
// if (ruanganIdtemp != ruangan.getId()){
// if (connect){
// rabbitHole.close();
// }
// rabbitHole.connect(urlSocket, String.valueOf(ruangan.getId()));
// connect = true;
// ruanganIdtemp = ruangan.getId();
// }
//
// Map<String, Object> map = new HashMap<>();
// map.put("title", titleNotifikasi);
// map.put("dariRuangan", dariRuangan);
// map.put("ruanganId", ruangan.getId());
// map.put("ruangan", convertToVO(new RuanganVO(), ruangan));
// map.put("modulAplikasi", convertToVO(new ModulAplikasiVO(), modulAplikasi));
// map.put("objekModulAplikasi", convertToVO(new ObjekModulAplikasiVO(), objekModulAplikasi));
// map.put("titleNotifikasi", titleNotifikasi);
// map.put("pesanNotifikasi", pesanNotifikasi);
// map.put("namaFungsiFrontEnd", namaFungsiFrontEnd);
// map.put("fromPegawai", loginUser.get(0).getPegawai());
// map.put("urlForm",CommonUtil.isNullOrEmpty(customURLObjekModul)? objekModulAplikasi.getAlamatUrlForm() : customURLObjekModul);
//
// rabbitHole.sendRabbitMQNotification(gson.toJson(map));
//
// //messagePublisher.BroadcastMessage(map);
// }
// if (connect){
// rabbitHole.close();
// }
// private static final TypeAdapterFactory FACTORY = new TypeAdapterFactory() {
// @Override
// @SuppressWarnings("unchecked")
// public <T> TypeAdapter<T> create(Gson gson, TypeToken<T> type) {
// return (HibernateProxy.class.isAssignableFrom(type.getRawType())
// ? (TypeAdapter<T>) new HibernateProxyTypeAdapter((TypeAdapter)gson.getAdapter(TypeToken.get(type.getRawType().getSuperclass())))
// : null);
// }
// };
//
//
// private static final class HibernateProxyTypeAdapter extends TypeAdapter<HibernateProxy> {
//
// private final TypeAdapter<Object> delegate;
//
// private HibernateProxyTypeAdapter(TypeAdapter<Object> delegate) {
// this.delegate = delegate;
// }
//
// @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;
// }
//
//
//
// delegate.write(out, ((HibernateProxy) value).getHibernateLazyInitializer().getImplementation());
// }
// }
}
/*
* else if (method.isAnnotationPresent(AppMenuPermision.class)){
*
* Authentication authentication =
* tokenAuthenticationService.getAuthentication(request);
*
* String namaUser = authentication.getName();
*
* List<LoginUser> loginUser =
* loginUserDao.findByNamaUser(namaUser);
*
* if (loginUser.isEmpty()) { // untuk testing false
* response.addHeader("Access-Control-Expose-Headers",
* "content-type");
* response.setHeader(Constants.MessageInfo.ERROR_MESSAGE, "User " +
* namaUser + " can not access current menu ");
* response.setStatus(HttpServletResponse.SC_UNAUTHORIZED); return
* false; }
*
* // get user login if (!loginUser.isEmpty()) { LoginUser user =
* loginUser.get(0); }else{ LOG.info("User {} is unauthorized",
* namaUser);
* response.setHeader(Constants.MessageInfo.ERROR_MESSAGE,
* "User is unauthorized");
* response.setStatus(HttpServletResponse.SC_UNAUTHORIZED); return
* false; } }
*/

View File

@ -106,7 +106,6 @@
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>${commons-io.version}</version>
<scope>runtime</scope>
</dependency>
<!-- For testing REST -->

View File

@ -1,70 +1,50 @@
package com.jasamedika.medifirst2000.interceptor;
import java.lang.reflect.Method;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.jasamedika.medifirst2000.constants.Constants;
import com.jasamedika.medifirst2000.dao.LoginUserDao;
import com.jasamedika.medifirst2000.dao.RuanganDao;
import com.jasamedika.medifirst2000.entities.*;
import com.jasamedika.medifirst2000.notification.MessagePublisher;
import com.jasamedika.medifirst2000.security.model.AppPermission;
import com.jasamedika.medifirst2000.security.service.TokenAuthenticationService;
import com.jasamedika.medifirst2000.service.*;
import com.jasamedika.medifirst2000.util.CommonUtil;
import com.jasamedika.medifirst2000.vo.NotifMessagingSchedulerVO;
import com.jasamedika.medifirst2000.vo.NotifMessagingVO;
import com.jasamedika.medifirst2000.vo.NotifikasiMessageObjekModulVO;
import com.jasamedika.medifirst2000.vo.ObjekModulAplikasiVO;
import org.apache.commons.lang3.ArrayUtils;
import org.json.JSONArray;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.core.Authentication;
import org.springframework.web.method.HandlerMethod;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
import com.jasamedika.medifirst2000.constants.Constants;
import com.jasamedika.medifirst2000.dao.LoginUserDao;
import com.jasamedika.medifirst2000.dao.NotifikasiMessageObjekModulDao;
import com.jasamedika.medifirst2000.dao.RuanganDao;
import com.jasamedika.medifirst2000.entities.KelompokUser;
import com.jasamedika.medifirst2000.entities.LoginUser;
import com.jasamedika.medifirst2000.entities.MapObjekModulToKelompokUser;
import com.jasamedika.medifirst2000.entities.MapObjekModulToLoginUser;
import com.jasamedika.medifirst2000.entities.Pegawai;
import com.jasamedika.medifirst2000.entities.Ruangan;
import com.jasamedika.medifirst2000.notification.MessagePublisher;
import com.jasamedika.medifirst2000.notification.MessageSubscriber;
import com.jasamedika.medifirst2000.security.model.AppPermission;
import com.jasamedika.medifirst2000.security.service.TokenAuthenticationService;
import com.jasamedika.medifirst2000.service.MapObjekModulToKelompokUserService;
import com.jasamedika.medifirst2000.service.MapObjekModulToLoginUserService;
import com.jasamedika.medifirst2000.service.NotifMessagingSchedulerService;
import com.jasamedika.medifirst2000.service.NotifMessagingService;
import com.jasamedika.medifirst2000.service.NotifikasiMessageObjekModulService;
import com.jasamedika.medifirst2000.service.ObjekModulAplikasiService;
import com.jasamedika.medifirst2000.util.CommonUtil;
import com.jasamedika.medifirst2000.util.DateUtil;
import com.jasamedika.medifirst2000.vo.NotifMessagingSchedulerVO;
import com.jasamedika.medifirst2000.vo.NotifMessagingVO;
import com.jasamedika.medifirst2000.vo.NotifikasiMessageObjekModulVO;
import com.jasamedika.medifirst2000.vo.ObjekModulAplikasiVO;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.lang.reflect.Method;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
/**
* Interceptor class for All annotation method controller @AppPermission
*
* @author Roberto
*
* direka ulang oleh Syamsu
* @author Roberto, direka ulang oleh Syamsu
*/
public class AppInterceptor implements HandlerInterceptor {
private static final String[] PRINT_PATTERN = {"/lap_", "/lap-", "/lap", "/cetak_", "/cetak-", "/print_", "/print-" };
private static final String[] ADD_PATTERN = {"/save_", "/save-", "/add_", "/add-", "/simpan_", "/simpan-"};
private static final String[] UPDATE_PATTERN = {"/update_", "/update-", "/edit_", "/edit-", "/ubah_", "/ubah-"};
private static final String[] PRINT_PATTERN = { "/lap_", "/lap-", "/lap", "/cetak_", "/cetak-", "/print_",
"/print-" };
private static final String[] DELETE_PATTERN = {"/delete_", "/delete-", "/hapus_", "/hapus-"};
private static final String[] ADD_PATTERN = { "/save_", "/save-", "/add_", "/add-", "/simpan_", "/simpan-" };
private final Logger LOG = LoggerFactory.getLogger(AppInterceptor.class);
private static final String[] UPDATE_PATTERN = { "/update_", "/update-", "/edit_", "/edit-", "/ubah_", "/ubah-" };
private static final String[] DELETE_PATTERN = { "/delete_", "/delete-", "/hapus_", "/hapus-" };
@Autowired
private TokenAuthenticationService tokenAuthenticationService;
@ -74,101 +54,55 @@ public class AppInterceptor implements HandlerInterceptor {
@Autowired
private MapObjekModulToKelompokUserService mapObjekModulToKelompokUserService;
@Autowired
private MapObjekModulToLoginUserService mapObjekModulToLoginUserService;
@Autowired
private ObjekModulAplikasiService<ObjekModulAplikasiVO> objekModulAplikasiService;
@Autowired
MessagePublisher<String, Object> messagePublisher;
@Autowired
MessageSubscriber messageSubscriber;
@Autowired
NotifMessagingService<NotifMessagingVO> notifMessagingService;
@Autowired
NotifikasiMessageObjekModulService<NotifikasiMessageObjekModulVO> notifikasiMessageObjekModulService;
@Autowired
NotifMessagingSchedulerService<NotifMessagingSchedulerVO> notifMessagingSchedulerService;
@Autowired
NotifikasiMessageObjekModulDao notifikasiModulMessageDao;
@Autowired
RuanganDao ruanganDao;
List<LoginUser> loginUser;
String namaUser;
// private int headerActionToAction(String action){
// if ("save".equals(action)){
// return AppPermission.ADD;
// } else if ("edit".equals(action)){
// return AppPermission.UPDATE;
// } else if ("delete".equals(action)){
// return AppPermission.DELETE;
// } else if ("print".equals(action)){
// return AppPermission.PRINT;
// } else {
// return AppPermission.VIEW;
// }
// }
private boolean contains(String source, String[] matchers){
if (CommonUtil.isNullOrEmpty(source) || ArrayUtils.isEmpty(matchers)){
private boolean contains(String source, String[] matchers) {
if (CommonUtil.isNullOrEmpty(source) || ArrayUtils.isEmpty(matchers))
return false;
}
for (int i=0;i<matchers.length; i++){
if (source.contains(matchers[i])){
for (String matcher : matchers)
if (source.contains(matcher))
return true;
}
}
return false;
}
private String filterUrlForm(String urlForm){
private String filterUrlForm(String urlForm) {
String[] hasil = urlForm.split("/");
System.out.println(hasil.length);
StringBuilder potongan = new StringBuilder();
for (int i=0; i<hasil.length && i<3; i++){
for (int i = 0; i < hasil.length && i < 3; i++)
potongan.append(hasil[i]).append("/");
}
// String current = urlForm;
// int pos = 0;
// int cpos = -1;
// for (int i=0; i<4; i++){
// pos = current.indexOf('/',pos+1);
// if (pos > 0){
// cpos = pos;
// }else{
// break;
// }
// }
// String oye = urlForm.substring(0, cpos);
return potongan.toString();
}
private boolean checkAuthSecure(HttpServletRequest request, HttpServletResponse response, String AlamatUrlForm, boolean supervisi) throws Exception {
private boolean checkAuthSecure(HttpServletRequest request, HttpServletResponse response, String AlamatUrlForm,
boolean supervisi) throws Exception {
Authentication authentication = tokenAuthenticationService.getAuthentication(request);
namaUser = authentication.getName();
loginUser = loginUserDao.findByNamaUser(namaUser);
if (CommonUtil.isNullOrEmpty(loginUser)) {
LOG.info("Empty login user");
response.setHeader("RequireSupervisor", "false");
response.setHeader(Constants.MessageInfo.ERROR_MESSAGE, "Empty login user");
response.setStatus(HttpServletResponse.SC_FORBIDDEN);
@ -176,132 +110,92 @@ public class AppInterceptor implements HandlerInterceptor {
}
return true;
}
private int checkUserPermision(LoginUser user, ObjekModulAplikasiVO objekModulAplikasiVO, int action){
private int checkUserPermision(LoginUser user, ObjekModulAplikasiVO objekModulAplikasiVO, int action) {
int result = -1;
MapObjekModulToLoginUser modul = mapObjekModulToLoginUserService.findByObjekModulAplikasi(objekModulAplikasiVO.getId(), user.getId());
MapObjekModulToLoginUser modul = mapObjekModulToLoginUserService
.findByObjekModulAplikasi(objekModulAplikasiVO.getId(), user.getId());
if (modul != null) {
LOG.info("Module security match");
result = 0;
switch (action) {
case AppPermission.ADD:
if (modul.getSimpan()){
result = 1;
}
break;
case AppPermission.UPDATE:
if (modul.getEdit()){
result = 1;
}
break;
case AppPermission.DELETE:
if (modul.getHapus()){
result = 1;
}
break;
case AppPermission.PRINT:
if (modul.getCetak()){
result = 1;
}
break;
case AppPermission.ADD:
if (modul.getSimpan())
result = 1;
break;
case AppPermission.UPDATE:
if (modul.getEdit())
result = 1;
break;
case AppPermission.DELETE:
if (modul.getHapus())
result = 1;
break;
case AppPermission.PRINT:
if (modul.getCetak())
result = 1;
break;
}
}
return result;
}
private int checkKelompokUserPermision(LoginUser user, ObjekModulAplikasiVO objekModulAplikasiVO, int action){
private int checkKelompokUserPermision(LoginUser user, ObjekModulAplikasiVO objekModulAplikasiVO, int action) {
KelompokUser role = user.getKelompokUser();
int result = -2;
if (role != null) {
MapObjekModulToKelompokUser modul = mapObjekModulToKelompokUserService.findByObjekModulAplikasi(objekModulAplikasiVO.getId(), role.getId());
MapObjekModulToKelompokUser modul = mapObjekModulToKelompokUserService
.findByObjekModulAplikasi(objekModulAplikasiVO.getId(), role.getId());
result = -1;
if (modul != null) {
LOG.info("Module security match");
result = 0;
switch (action) {
case AppPermission.ADD:
if (modul.getSimpan()){
result = 1;
}
break;
case AppPermission.UPDATE:
if (modul.getEdit()){
result = 1;
}
break;
case AppPermission.DELETE:
if (modul.getHapus()){
result = 1;
}
break;
case AppPermission.PRINT:
if (modul.getCetak()){
result = 1;
}
break;
case AppPermission.ADD:
if (modul.getSimpan())
result = 1;
break;
case AppPermission.UPDATE:
if (modul.getEdit())
result = 1;
break;
case AppPermission.DELETE:
if (modul.getHapus())
result = 1;
break;
case AppPermission.PRINT:
if (modul.getCetak())
result = 1;
break;
}
}
}
return result;
}
private boolean checkPermission(HttpServletRequest request, HttpServletResponse response, String AlamatUrlForm, int action) throws Exception {
// Alter modified Syamsu
List<ObjekModulAplikasiVO> objekModulAplikasi = objekModulAplikasiService.findByAlamatUrlForm(filterUrlForm(AlamatUrlForm));
if (CommonUtil.isNullOrEmpty(objekModulAplikasi)){
LOG.warn(AlamatUrlForm + " : Sementara defaultnya diloloskan semuanya di AppInterceptor jika tidak ada di dalam daftar objek modul aplikasi..");
return true; // Defaultnya diloloskan semuanya...
}
if (!checkAuthSecure(request, response, AlamatUrlForm, false)) {
private boolean checkPermission(HttpServletRequest request, HttpServletResponse response, String AlamatUrlForm,
int action) throws Exception {
List<ObjekModulAplikasiVO> objekModulAplikasi = objekModulAplikasiService
.findByAlamatUrlForm(filterUrlForm(AlamatUrlForm));
if (CommonUtil.isNullOrEmpty(objekModulAplikasi))
return true;
if (!checkAuthSecure(request, response, AlamatUrlForm, false))
return false;
}
int resultUser = checkUserPermision(loginUser.get(0), objekModulAplikasi.get(0), action);
if (resultUser == 0){
LOG.info("User {} has need superVisor for action in {} module application", namaUser, action);
if (resultUser == 0) {
response.setHeader("RequireSupervisor", "true");
response.setHeader(Constants.MessageInfo.ERROR_MESSAGE, "Action requires supervisor");
response.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
return false;
} else if (resultUser == 1){
} else if (resultUser == 1) {
response.setHeader(Constants.MessageInfo.INFO_MESSAGE, "Supervise execution success");
response.setStatus(HttpServletResponse.SC_OK);
return true;
}
}
int resultKelompokUser = checkKelompokUserPermision(loginUser.get(0), objekModulAplikasi.get(0), action);
if (resultKelompokUser == -2){
LOG.warn("Sementara defaultnya diloloskan semuanya di AppInterceptor jika tidak ada di dalam daftar kelompok user..");
return true; // Defaultnya diloloskan semuanya...
// LOG.info("User {} has no role to gain access restricted area", namaUser);
// response.setHeader("RequireSupervisor", "false");
// response.setHeader(Constants.MessageInfo.ERROR_MESSAGE,
// "User " + namaUser + " has no role to gain access restricted area");
// response.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
// return false;
} else if (resultKelompokUser == -1){
LOG.warn("Sementara defaultnya diloloskan semuanya di AppInterceptor jika tidak ada di dalam daftar Map objek modul to kelompok user..");
return true; // Defaultnya diloloskan semuanya...
// LOG.info("User {} has no access to module application", namaUser);
// response.setHeader("RequireSupervisor", "false");
// response.setHeader(Constants.MessageInfo.ERROR_MESSAGE,
// "User " + namaUser + " has no access to module application");
// response.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
// return false;
} else if (resultKelompokUser == 0) {
LOG.info("User {} has need superVisor for action in {} module application", namaUser, action);
if (resultKelompokUser == -2) {
return true;
} else if (resultKelompokUser == -1) {
return true;
} else if (resultKelompokUser == 0) {
response.setHeader("RequireSupervisor", "true");
response.setHeader(Constants.MessageInfo.ERROR_MESSAGE, "Action requires supervisor");
response.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
@ -310,113 +204,54 @@ public class AppInterceptor implements HandlerInterceptor {
response.setHeader(Constants.MessageInfo.INFO_MESSAGE, "Supervise execution success");
response.setStatus(HttpServletResponse.SC_OK);
return true;
}
}
}
/*
* return true untuk valid permission request ke controller method
*/
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
////// Syamsu /////
// TUTUP DULU PENGGUNAANNYA...
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) {
HandlerMethod hm;
Method method = null;
// int methodApp = AppPermission.VIEW;
Method method;
response.setHeader("Access-Control-Expose-Headers", "RequireSupervisor" + ","
+ Constants.MessageInfo.ERROR_MESSAGE + "," + Constants.MessageInfo.INFO_MESSAGE);
////// Syamsu /////
String AlamatUrlForm = request.getHeader(Constants.HttpHeader.URL_FORM) == null ? "": request.getHeader(Constants.HttpHeader.URL_FORM);
// Buat Om, Kang, Aa Reza terkait Security Role
//String KdRuangan = null;
String KdRuangan = request.getHeader(Constants.HttpHeader.KD_RUANGAN) == null ? "": request.getHeader(Constants.HttpHeader.KD_RUANGAN);
String AlamatUrlForm = request.getHeader(Constants.HttpHeader.URL_FORM) == null ? ""
: request.getHeader(Constants.HttpHeader.URL_FORM);
String KdRuangan = request.getHeader(Constants.HttpHeader.KD_RUANGAN) == null ? ""
: request.getHeader(Constants.HttpHeader.KD_RUANGAN);
int action = AppPermission.VIEW;
if (CommonUtil.isNullOrEmpty(AlamatUrlForm)){
//LOG.warn("Sementara defaultnya di loloskan semuanya di AppInterceptor jika tidak ada header 'AlamatUrlForm' ..");
return true; // Lewatin dulu sementara;
}
if (CommonUtil.isNullOrEmpty(KdRuangan) || "0".equals(KdRuangan)){
LOG.warn("Sementara defaultnya diloloskan semuanya di AppInterceptor jika tidak ada header 'KdRuangan' atau header 'KdRuangan'nya 0 ..");
return true; // Lewatin dulu sementara;
}
//String headerAction = request.getHeader(Constants.HttpHeader.ACTION) == null ? "" : request.getHeader(Constants.HttpHeader.ACTION);
if (CommonUtil.isNullOrEmpty(AlamatUrlForm))
return true;
if (CommonUtil.isNullOrEmpty(KdRuangan) || "0".equals(KdRuangan))
return true;
String URI = request.getRequestURI();
String methodHttp = request.getMethod();
try {
// Alter modified Syamsu
if (handler instanceof org.springframework.web.method.HandlerMethod) {
hm = (HandlerMethod) handler;
method = hm.getMethod();
} else {
return checkAuthSecure(request, response, AlamatUrlForm, true);
}
// AlamatUrlForm // Alter modified Syamsu
boolean usingAnno = method != null && method.isAnnotationPresent(AppPermission.class);
boolean postM = "POST".equals(methodHttp);
boolean signInOut = !URI.contains("auth/sign-in") && !URI.contains("auth/sign-out");
boolean getM = "GET".equals(methodHttp);
boolean cetak = contains (URI, PRINT_PATTERN);
/*(URI.contains("/lap_") || URI.contains("/lap-") || URI.contains("/lap")
|| URI.contains("/cetak_") || URI.contains("/print_") || URI.contains("/cetak-")
|| URI.contains("/print-"));*/
boolean simpan = contains (URI, ADD_PATTERN);
/*(URI.contains("/save_") || URI.contains("/add_") || URI.contains("/simpan_")
|| URI.contains("/save-") || URI.contains("/add-") || URI.contains("/simpan-"));*/
boolean ubah = contains (URI, UPDATE_PATTERN);
/*(URI.contains("/update_") || URI.contains("/edit_") || URI.contains("/ubah_")
|| URI.contains("/update-") || URI.contains("/edit-") || URI.contains("/ubah-"));*/
boolean hapus = contains (URI, DELETE_PATTERN);
/*(URI.contains("/delete_") || URI.contains("/hapus_") || URI.contains("/delete-")
|| URI.contains("/hapus-")); */
boolean cetak = contains(URI, PRINT_PATTERN);
boolean simpan = contains(URI, ADD_PATTERN);
boolean ubah = contains(URI, UPDATE_PATTERN);
boolean hapus = contains(URI, DELETE_PATTERN);
if (usingAnno) {
if (method.getAnnotation(AppPermission.class) != null) {
if (method.getAnnotation(AppPermission.class) != null)
action = method.getAnnotation(AppPermission.class).value();
}
if (AppPermission.SPECIALS == action /* && "#/home".equals(AlamatUrlForm) */) {
if (AppPermission.SPECIALS == action)
return true;
}
}
if (getM && cetak) {
action = AppPermission.PRINT;
// if (headerAction != null && !"".equals(headerAction)) {
// action = headerActionToAction(headerAction);
// }
if (method.getAnnotation(AppPermission.class) != null) {
if (method != null && method.getAnnotation(AppPermission.class) != null)
action = method.getAnnotation(AppPermission.class).value();
}
return checkPermission(request, response, AlamatUrlForm, action);
}
if ((usingAnno || postM) && signInOut) {
if (simpan) {
action = AppPermission.ADD;
} else if (ubah) {
@ -426,345 +261,104 @@ public class AppInterceptor implements HandlerInterceptor {
} else if (cetak) {
action = AppPermission.PRINT;
}
// if (headerAction != null && !"".equals(headerAction)) {
// action = headerActionToAction(headerAction);
// }
if (method.getAnnotation(AppPermission.class) != null) {
if (method != null && method.getAnnotation(AppPermission.class) != null)
action = method.getAnnotation(AppPermission.class).value();
}
return checkPermission(request, response, AlamatUrlForm, action);
}
} catch (Exception e) {
e.printStackTrace();
System.out.println("Not Found " + request.getRequestURL());
LOG.info("Error accured unauthorized");
response.setHeader(Constants.MessageInfo.ERROR_MESSAGE, "Something wrong happened");
response.setHeader("RequireSupervisor", "false");
response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
return false;
}
// TUTUP DULU PENGGUNAANNYA...
return true;
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object obj, ModelAndView mav) throws Exception {}
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object obj, ModelAndView mav) {
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object obj, Exception ex) throws Exception {
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object obj, Exception ex)
throws Exception {
String AlamatUrlForm = request.getHeader(Constants.HttpHeader.URL_FORM) == null ? ""
: request.getHeader(Constants.HttpHeader.URL_FORM);
String KdRuangan = request.getHeader(Constants.HttpHeader.KD_RUANGAN) == null ? ""
: request.getHeader(Constants.HttpHeader.KD_RUANGAN);
String idRuanganTujuan = request.getHeader(Constants.HttpHeader.KD_RUANGAN_T) == null ? ""
: request.getHeader(Constants.HttpHeader.KD_RUANGAN_T);
String idRuanganTujuanA = request.getHeader(Constants.HttpHeader.KD_RUANGAN_A) == null ? ""
: request.getHeader(Constants.HttpHeader.KD_RUANGAN_A);
String tglKirim = request.getHeader(Constants.HttpHeader.TGL_KIRIM) == null ? ""
: request.getHeader(Constants.HttpHeader.TGL_KIRIM);
boolean notHttpOK = response.getStatus() >= HttpServletResponse.SC_BAD_REQUEST;
boolean notLewatMenu = CommonUtil.isNullOrEmpty(AlamatUrlForm) || CommonUtil.isNullOrEmpty(KdRuangan);
Integer ruanganAsalId = 0;
try {
ruanganAsalId = Integer.parseInt(KdRuangan);
}catch(Exception e){
ex = e;
}
Integer ruanganAsalId = Integer.parseInt(KdRuangan);
boolean adaError = CommonUtil.isNotNullOrEmpty(ex);
if (notHttpOK || notLewatMenu || adaError){
if (notHttpOK || notLewatMenu || adaError)
return;
}
Authentication authentication = tokenAuthenticationService.getAuthentication(request);
if (CommonUtil.isNullOrEmpty(authentication)){
if (CommonUtil.isNullOrEmpty(authentication))
return;
}
namaUser = authentication.getName();
loginUser = loginUserDao.findByNamaUser(namaUser);
if (CommonUtil.isNullOrEmpty(loginUser)) {
if (CommonUtil.isNullOrEmpty(loginUser))
return;
}
String potongan = filterUrlForm(AlamatUrlForm);
List<ObjekModulAplikasiVO> objekModulAplikasiVOs = objekModulAplikasiService.findByAlamatUrlForm(potongan);
if (CommonUtil.isNullOrEmpty(objekModulAplikasiVOs)){
if (CommonUtil.isNullOrEmpty(objekModulAplikasiVOs))
return;
}
String URI = request.getRequestURI();
Integer objekModulAplikasId = objekModulAplikasiVOs.get(0).getId();
List<NotifMessagingVO> notifMessagingVOs = notifMessagingService.findByObjekModulAplikasiIdAndUrlBackEndOrUrlBackEndIsNull(objekModulAplikasId, URI);
if (CommonUtil.isNullOrEmpty(notifMessagingVOs)) {
List<NotifMessagingVO> notifMessagingVOs = notifMessagingService
.findByObjekModulAplikasiIdAndUrlBackEndOrUrlBackEndIsNull(objekModulAplikasId, URI);
if (CommonUtil.isNullOrEmpty(notifMessagingVOs))
return;
}
Integer notifMessagingId = notifMessagingVOs.get(0).getId();
if (CommonUtil.isNullOrEmpty(tglKirim)) {
List<Integer> ruanganTujuansId = new ArrayList<>();
System.out.println("--");
if (!"".equals(idRuanganTujuan)){
if (!"".equals(idRuanganTujuan)) {
JSONArray ruanganTujuanIds = new JSONArray(idRuanganTujuan);
for (int i=0; i<ruanganTujuanIds.length(); i++){
for (int i = 0; i < ruanganTujuanIds.length(); i++) {
Integer ruanganTujuanId = ruanganTujuanIds.optInt(i, 0);
ruanganTujuansId.add(ruanganTujuanId);
}
}
}
if (!"".equals(idRuanganTujuanA) && ruanganTujuansId.isEmpty()) {
JSONArray ruanganTujuanIds = new JSONArray(idRuanganTujuanA);
for (int i=0; i<ruanganTujuanIds.length(); i++){
for (int i = 0; i < ruanganTujuanIds.length(); i++) {
Integer ruanganTujuanId = ruanganTujuanIds.optInt(i, 0);
ruanganTujuansId.add(ruanganTujuanId);
}
}
MessagePublisher.RabbitHole rabbitHole = messagePublisher.getRabbitHole();
Pegawai pegawai = loginUser.get(0).getPegawai();
Ruangan ruanganAsal = ruanganDao.findById(ruanganAsalId);
if (ruanganTujuansId.size() > 0){
try{
rabbitHole.sendNotif(rabbitHole, ruanganAsal, pegawai, notifikasiMessageObjekModulService, notifMessagingId, ruanganTujuansId);
}catch(Exception e){
e.printStackTrace();
LOG.info(DateUtil.now()+" send notif dari Ruangan {} dengan ruanganId {} pada notifMessageId {} ada masalah {}",
ruanganAsal.getNamaRuangan(), ruanganAsalId, notifMessagingId, e.getMessage());
}
}
if (!ruanganTujuansId.isEmpty())
rabbitHole.sendNotif(rabbitHole, ruanganAsal, pegawai, notifikasiMessageObjekModulService,
notifMessagingId, ruanganTujuansId);
} else {
JSONArray tglKirims = new JSONArray(tglKirim);
JSONArray ruanganTujuanIds = new JSONArray(idRuanganTujuan);
SimpleDateFormat myFormat = new SimpleDateFormat("yyyy-MM-dd");
for (int i=0; i<tglKirims.length(); i++){
for (int i = 0; i < tglKirims.length(); i++) {
String ctglKirim = tglKirims.optString(i, "");
Integer cRuanganTujuanId = ruanganTujuanIds.optInt(i,0);
Integer cRuanganTujuanId = ruanganTujuanIds.optInt(i, 0);
Date date = myFormat.parse(ctglKirim);
NotifMessagingSchedulerVO vo = new NotifMessagingSchedulerVO();
vo.setTglKirim(date);
vo.setTerkirim(false);
vo.setNotifMessagingId(notifMessagingId);
vo.setRuanganIdAsal(ruanganAsalId);
vo.setRuanganIdTujuan(cRuanganTujuanId);
vo.setPegawaiId(loginUser.get(0).getPegawai().getId());
vo.setKdProfile((short)0);
vo.setKdProfile((short) 0);
vo.setKodeExternal("");
vo.setNamaExternal("");
vo.setReportDisplay("");
vo.setStatusEnabled(true);
notifMessagingSchedulerService.add(vo);
}
}
}
// <T extends BaseMasterVO> T convertToVO(T t, Object o){
// BeanUtils.copyProperties(t, o);
// return t;
// }
// try{
//
//
// String AlamatUrlForm =
// request.getHeader(Constants.HttpHeader.URL_FORM) == null ? "" :
// request.getHeader(Constants.HttpHeader.URL_FORM);
// String KdRuangan = request.getHeader(Constants.HttpHeader.KD_RUANGAN)
// == null ? "" : request.getHeader(Constants.HttpHeader.KD_RUANGAN);
//
// Authentication authentication =
// tokenAuthenticationService.getAuthentication(request);
//
// namaUser = authentication.getName();
// loginUser = loginUserDao.findByNamaUser(namaUser);
//
//
// if (loginUser.isEmpty()) {
// publisher.BroadcastMessage(KdRuangan, namaUser, AlamatUrlForm);
// }
//
//
//
//
//// String routingKeyAndQueueName = "ruanganId." + KdRuangan;
////
//// publisher.sendRabbitMQNotification("127.0.0.1", "ruanganId." +
// KdRuangan, "Kd Ruangan : " + KdRuangan + ", AlamatUrlForm : " +
// AlamatUrlForm);
////
//// subscriber.startRabbitMQNotification("127.0.0.1",
// routingKeyAndQueueName);
//// subscriber.listenRabbitMQNotification(routingKeyAndQueueName,
// subscriber.getDefaultConsumer(), false);
//// subscriber.stopRabbitMQNotification();
//
// }catch(Exception e){
// //e.printStackTrace();
// }
// //String urlSocket = messagePublisher.GetSettingDataFixed("UrlRabbitMQMessaging"); sementara kunci dulu.
//
// String urlSocket = "127.0.0.1";
//
// List<NotifikasiMessageObjekModulVO> notifikasiMessageObjekModulVOs = notifikasiMessageObjekModulService.findByNotifMessagingIdAndRuanganId(notifMessagingId, ruanganTujuansId);
//
// if (CommonUtil.isNullOrEmpty(notifikasiMessageObjekModulVOs)) {
// return;
// }
//
// Integer ruanganIdtemp = 0;
// boolean connect = false;
//
// for (NotifikasiMessageObjekModulVO vo : notifikasiMessageObjekModulVOs){
// Ruangan ruangan = vo.getRuangan();
// ModulAplikasi modulAplikasi = vo.getModulAplikasi();
// ObjekModulAplikasi objekModulAplikasi = vo.getObjekModulAplikasi();
// String customURLObjekModul = vo.getCustomURLObjekModul();
// String titleNotifikasi = vo.getTitleNotifikasi();
// String pesanNotifikasi = vo.getPesanNotifikasi();
// String namaFungsiFrontEnd = vo.getNamaFungsiFrontEnd();
//
// if (ruangan.getId() == ruanganId){
// continue;
// }
//
// RuanganVO dariRuangan = ruanganService.findById(ruanganId);
//
// if (ruanganIdtemp != ruangan.getId()){
// if (connect){
// rabbitHole.close();
// }
// rabbitHole.connect(urlSocket, String.valueOf(ruangan.getId()));
// connect = true;
// ruanganIdtemp = ruangan.getId();
// }
//
// Map<String, Object> map = new HashMap<>();
// map.put("title", titleNotifikasi);
// map.put("dariRuangan", dariRuangan);
// map.put("ruanganId", ruangan.getId());
// map.put("ruangan", convertToVO(new RuanganVO(), ruangan));
// map.put("modulAplikasi", convertToVO(new ModulAplikasiVO(), modulAplikasi));
// map.put("objekModulAplikasi", convertToVO(new ObjekModulAplikasiVO(), objekModulAplikasi));
// map.put("titleNotifikasi", titleNotifikasi);
// map.put("pesanNotifikasi", pesanNotifikasi);
// map.put("namaFungsiFrontEnd", namaFungsiFrontEnd);
// map.put("fromPegawai", loginUser.get(0).getPegawai());
// map.put("urlForm",CommonUtil.isNullOrEmpty(customURLObjekModul)? objekModulAplikasi.getAlamatUrlForm() : customURLObjekModul);
//
// rabbitHole.sendRabbitMQNotification(gson.toJson(map));
//
// //messagePublisher.BroadcastMessage(map);
// }
// if (connect){
// rabbitHole.close();
// }
// private static final TypeAdapterFactory FACTORY = new TypeAdapterFactory() {
// @Override
// @SuppressWarnings("unchecked")
// public <T> TypeAdapter<T> create(Gson gson, TypeToken<T> type) {
// return (HibernateProxy.class.isAssignableFrom(type.getRawType())
// ? (TypeAdapter<T>) new HibernateProxyTypeAdapter((TypeAdapter)gson.getAdapter(TypeToken.get(type.getRawType().getSuperclass())))
// : null);
// }
// };
//
//
// private static final class HibernateProxyTypeAdapter extends TypeAdapter<HibernateProxy> {
//
// private final TypeAdapter<Object> delegate;
//
// private HibernateProxyTypeAdapter(TypeAdapter<Object> delegate) {
// this.delegate = delegate;
// }
//
// @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;
// }
//
//
//
// delegate.write(out, ((HibernateProxy) value).getHibernateLazyInitializer().getImplementation());
// }
// }
}
/*
* else if (method.isAnnotationPresent(AppMenuPermision.class)){
*
* Authentication authentication =
* tokenAuthenticationService.getAuthentication(request);
*
* String namaUser = authentication.getName();
*
* List<LoginUser> loginUser =
* loginUserDao.findByNamaUser(namaUser);
*
* if (loginUser.isEmpty()) { // untuk testing false
* response.addHeader("Access-Control-Expose-Headers",
* "content-type");
* response.setHeader(Constants.MessageInfo.ERROR_MESSAGE, "User " +
* namaUser + " can not access current menu ");
* response.setStatus(HttpServletResponse.SC_UNAUTHORIZED); return
* false; }
*
* // get user login if (!loginUser.isEmpty()) { LoginUser user =
* loginUser.get(0); }else{ LOG.info("User {} is unauthorized",
* namaUser);
* response.setHeader(Constants.MessageInfo.ERROR_MESSAGE,
* "User is unauthorized");
* response.setStatus(HttpServletResponse.SC_UNAUTHORIZED); return
* false; } }
*/

View File

@ -210,6 +210,16 @@
<groupId>net.sf.jasperreports</groupId>
<artifactId>jasperreports</artifactId>
<version>6.11.0</version>
<exclusions>
<exclusion>
<groupId>com.lowagie</groupId>
<artifactId>itext</artifactId>
</exclusion>
<exclusion>
<groupId>org.olap4j</groupId>
<artifactId>olap4j</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>

View File

@ -1,70 +1,49 @@
package com.jasamedika.medifirst2000.interceptor;
import java.lang.reflect.Method;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.jasamedika.medifirst2000.constants.Constants;
import com.jasamedika.medifirst2000.dao.LoginUserDao;
import com.jasamedika.medifirst2000.dao.RuanganDao;
import com.jasamedika.medifirst2000.entities.*;
import com.jasamedika.medifirst2000.notification.MessagePublisher;
import com.jasamedika.medifirst2000.security.model.AppPermission;
import com.jasamedika.medifirst2000.security.service.TokenAuthenticationService;
import com.jasamedika.medifirst2000.service.*;
import com.jasamedika.medifirst2000.util.CommonUtil;
import com.jasamedika.medifirst2000.vo.NotifMessagingSchedulerVO;
import com.jasamedika.medifirst2000.vo.NotifMessagingVO;
import com.jasamedika.medifirst2000.vo.NotifikasiMessageObjekModulVO;
import com.jasamedika.medifirst2000.vo.ObjekModulAplikasiVO;
import org.apache.commons.lang3.ArrayUtils;
import org.json.JSONArray;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.core.Authentication;
import org.springframework.web.method.HandlerMethod;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
import com.jasamedika.medifirst2000.constants.Constants;
import com.jasamedika.medifirst2000.dao.LoginUserDao;
import com.jasamedika.medifirst2000.dao.NotifikasiMessageObjekModulDao;
import com.jasamedika.medifirst2000.dao.RuanganDao;
import com.jasamedika.medifirst2000.entities.KelompokUser;
import com.jasamedika.medifirst2000.entities.LoginUser;
import com.jasamedika.medifirst2000.entities.MapObjekModulToKelompokUser;
import com.jasamedika.medifirst2000.entities.MapObjekModulToLoginUser;
import com.jasamedika.medifirst2000.entities.Pegawai;
import com.jasamedika.medifirst2000.entities.Ruangan;
import com.jasamedika.medifirst2000.notification.MessagePublisher;
import com.jasamedika.medifirst2000.notification.MessageSubscriber;
import com.jasamedika.medifirst2000.security.model.AppPermission;
import com.jasamedika.medifirst2000.security.service.TokenAuthenticationService;
import com.jasamedika.medifirst2000.service.MapObjekModulToKelompokUserService;
import com.jasamedika.medifirst2000.service.MapObjekModulToLoginUserService;
import com.jasamedika.medifirst2000.service.NotifMessagingSchedulerService;
import com.jasamedika.medifirst2000.service.NotifMessagingService;
import com.jasamedika.medifirst2000.service.NotifikasiMessageObjekModulService;
import com.jasamedika.medifirst2000.service.ObjekModulAplikasiService;
import com.jasamedika.medifirst2000.util.CommonUtil;
import com.jasamedika.medifirst2000.util.DateUtil;
import com.jasamedika.medifirst2000.vo.NotifMessagingSchedulerVO;
import com.jasamedika.medifirst2000.vo.NotifMessagingVO;
import com.jasamedika.medifirst2000.vo.NotifikasiMessageObjekModulVO;
import com.jasamedika.medifirst2000.vo.ObjekModulAplikasiVO;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.lang.reflect.Method;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
/**
* Interceptor class for All annotation method controller @AppPermission
*
* @author Roberto
*
* direka ulang oleh Syamsu
* @author Roberto, direka ulang oleh Syamsu
*/
public class AppInterceptor implements HandlerInterceptor {
private static final String[] PRINT_PATTERN = {"/lap_", "/lap-", "/lap", "/cetak_", "/cetak-", "/print_", "/print-" };
private static final String[] ADD_PATTERN = {"/save_", "/save-", "/add_", "/add-", "/simpan_", "/simpan-"};
private static final String[] UPDATE_PATTERN = {"/update_", "/update-", "/edit_", "/edit-", "/ubah_", "/ubah-"};
private static final String[] PRINT_PATTERN = { "/lap_", "/lap-", "/lap", "/cetak_", "/cetak-", "/print_",
"/print-" };
private static final String[] DELETE_PATTERN = {"/delete_", "/delete-", "/hapus_", "/hapus-"};
private static final String[] ADD_PATTERN = { "/save_", "/save-", "/add_", "/add-", "/simpan_", "/simpan-" };
private final Logger LOG = LoggerFactory.getLogger(AppInterceptor.class);
private static final String[] UPDATE_PATTERN = { "/update_", "/update-", "/edit_", "/edit-", "/ubah_", "/ubah-" };
private static final String[] DELETE_PATTERN = { "/delete_", "/delete-", "/hapus_", "/hapus-" };
@Autowired
private TokenAuthenticationService tokenAuthenticationService;
@ -74,101 +53,55 @@ public class AppInterceptor implements HandlerInterceptor {
@Autowired
private MapObjekModulToKelompokUserService mapObjekModulToKelompokUserService;
@Autowired
private MapObjekModulToLoginUserService mapObjekModulToLoginUserService;
@Autowired
private ObjekModulAplikasiService<ObjekModulAplikasiVO> objekModulAplikasiService;
@Autowired
MessagePublisher<String, Object> messagePublisher;
@Autowired
MessageSubscriber messageSubscriber;
@Autowired
NotifMessagingService<NotifMessagingVO> notifMessagingService;
@Autowired
NotifikasiMessageObjekModulService<NotifikasiMessageObjekModulVO> notifikasiMessageObjekModulService;
@Autowired
NotifMessagingSchedulerService<NotifMessagingSchedulerVO> notifMessagingSchedulerService;
@Autowired
NotifikasiMessageObjekModulDao notifikasiModulMessageDao;
@Autowired
RuanganDao ruanganDao;
List<LoginUser> loginUser;
String namaUser;
// private int headerActionToAction(String action){
// if ("save".equals(action)){
// return AppPermission.ADD;
// } else if ("edit".equals(action)){
// return AppPermission.UPDATE;
// } else if ("delete".equals(action)){
// return AppPermission.DELETE;
// } else if ("print".equals(action)){
// return AppPermission.PRINT;
// } else {
// return AppPermission.VIEW;
// }
// }
private boolean contains(String source, String[] matchers){
if (CommonUtil.isNullOrEmpty(source) || ArrayUtils.isEmpty(matchers)){
private boolean contains(String source, String[] matchers) {
if (CommonUtil.isNullOrEmpty(source) || ArrayUtils.isEmpty(matchers))
return false;
}
for (int i=0;i<matchers.length; i++){
if (source.contains(matchers[i])){
for (String matcher : matchers)
if (source.contains(matcher))
return true;
}
}
return false;
}
private String filterUrlForm(String urlForm){
private String filterUrlForm(String urlForm) {
String[] hasil = urlForm.split("/");
System.out.println(hasil.length);
StringBuilder potongan = new StringBuilder();
for (int i=0; i<hasil.length && i<3; i++){
for (int i = 0; i < hasil.length && i < 3; i++)
potongan.append(hasil[i]).append("/");
}
// String current = urlForm;
// int pos = 0;
// int cpos = -1;
// for (int i=0; i<4; i++){
// pos = current.indexOf('/',pos+1);
// if (pos > 0){
// cpos = pos;
// }else{
// break;
// }
// }
// String oye = urlForm.substring(0, cpos);
return potongan.toString();
}
private boolean checkAuthSecure(HttpServletRequest request, HttpServletResponse response, String AlamatUrlForm, boolean supervisi) throws Exception {
private boolean checkAuthSecure(HttpServletRequest request, HttpServletResponse response, String AlamatUrlForm,
boolean supervisi) throws Exception {
Authentication authentication = tokenAuthenticationService.getAuthentication(request);
namaUser = authentication.getName();
loginUser = loginUserDao.findByNamaUser(namaUser);
if (CommonUtil.isNullOrEmpty(loginUser)) {
LOG.info("Empty login user");
response.setHeader("RequireSupervisor", "false");
response.setHeader(Constants.MessageInfo.ERROR_MESSAGE, "Empty login user");
response.setStatus(HttpServletResponse.SC_FORBIDDEN);
@ -176,132 +109,92 @@ public class AppInterceptor implements HandlerInterceptor {
}
return true;
}
private int checkUserPermision(LoginUser user, ObjekModulAplikasiVO objekModulAplikasiVO, int action){
private int checkUserPermision(LoginUser user, ObjekModulAplikasiVO objekModulAplikasiVO, int action) {
int result = -1;
MapObjekModulToLoginUser modul = mapObjekModulToLoginUserService.findByObjekModulAplikasi(objekModulAplikasiVO.getId(), user.getId());
MapObjekModulToLoginUser modul = mapObjekModulToLoginUserService
.findByObjekModulAplikasi(objekModulAplikasiVO.getId(), user.getId());
if (modul != null) {
LOG.info("Module security match");
result = 0;
switch (action) {
case AppPermission.ADD:
if (modul.getSimpan()){
result = 1;
}
break;
case AppPermission.UPDATE:
if (modul.getEdit()){
result = 1;
}
break;
case AppPermission.DELETE:
if (modul.getHapus()){
result = 1;
}
break;
case AppPermission.PRINT:
if (modul.getCetak()){
result = 1;
}
break;
case AppPermission.ADD:
if (modul.getSimpan())
result = 1;
break;
case AppPermission.UPDATE:
if (modul.getEdit())
result = 1;
break;
case AppPermission.DELETE:
if (modul.getHapus())
result = 1;
break;
case AppPermission.PRINT:
if (modul.getCetak())
result = 1;
break;
}
}
return result;
}
private int checkKelompokUserPermision(LoginUser user, ObjekModulAplikasiVO objekModulAplikasiVO, int action){
private int checkKelompokUserPermision(LoginUser user, ObjekModulAplikasiVO objekModulAplikasiVO, int action) {
KelompokUser role = user.getKelompokUser();
int result = -2;
if (role != null) {
MapObjekModulToKelompokUser modul = mapObjekModulToKelompokUserService.findByObjekModulAplikasi(objekModulAplikasiVO.getId(), role.getId());
MapObjekModulToKelompokUser modul = mapObjekModulToKelompokUserService
.findByObjekModulAplikasi(objekModulAplikasiVO.getId(), role.getId());
result = -1;
if (modul != null) {
LOG.info("Module security match");
result = 0;
switch (action) {
case AppPermission.ADD:
if (modul.getSimpan()){
result = 1;
}
break;
case AppPermission.UPDATE:
if (modul.getEdit()){
result = 1;
}
break;
case AppPermission.DELETE:
if (modul.getHapus()){
result = 1;
}
break;
case AppPermission.PRINT:
if (modul.getCetak()){
result = 1;
}
break;
case AppPermission.ADD:
if (modul.getSimpan())
result = 1;
break;
case AppPermission.UPDATE:
if (modul.getEdit())
result = 1;
break;
case AppPermission.DELETE:
if (modul.getHapus())
result = 1;
break;
case AppPermission.PRINT:
if (modul.getCetak())
result = 1;
break;
}
}
}
return result;
}
private boolean checkPermission(HttpServletRequest request, HttpServletResponse response, String AlamatUrlForm, int action) throws Exception {
// Alter modified Syamsu
List<ObjekModulAplikasiVO> objekModulAplikasi = objekModulAplikasiService.findByAlamatUrlForm(filterUrlForm(AlamatUrlForm));
if (CommonUtil.isNullOrEmpty(objekModulAplikasi)){
LOG.warn(AlamatUrlForm + " : Sementara defaultnya diloloskan semuanya di AppInterceptor jika tidak ada di dalam daftar objek modul aplikasi..");
return true; // Defaultnya diloloskan semuanya...
}
if (!checkAuthSecure(request, response, AlamatUrlForm, false)) {
private boolean checkPermission(HttpServletRequest request, HttpServletResponse response, String AlamatUrlForm,
int action) throws Exception {
List<ObjekModulAplikasiVO> objekModulAplikasi = objekModulAplikasiService
.findByAlamatUrlForm(filterUrlForm(AlamatUrlForm));
if (CommonUtil.isNullOrEmpty(objekModulAplikasi))
return true;
if (!checkAuthSecure(request, response, AlamatUrlForm, false))
return false;
}
int resultUser = checkUserPermision(loginUser.get(0), objekModulAplikasi.get(0), action);
if (resultUser == 0){
LOG.info("User {} has need superVisor for action in {} module application", namaUser, action);
if (resultUser == 0) {
response.setHeader("RequireSupervisor", "true");
response.setHeader(Constants.MessageInfo.ERROR_MESSAGE, "Action requires supervisor");
response.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
return false;
} else if (resultUser == 1){
} else if (resultUser == 1) {
response.setHeader(Constants.MessageInfo.INFO_MESSAGE, "Supervise execution success");
response.setStatus(HttpServletResponse.SC_OK);
return true;
}
}
int resultKelompokUser = checkKelompokUserPermision(loginUser.get(0), objekModulAplikasi.get(0), action);
if (resultKelompokUser == -2){
LOG.warn("Sementara defaultnya diloloskan semuanya di AppInterceptor jika tidak ada di dalam daftar kelompok user..");
return true; // Defaultnya diloloskan semuanya...
// LOG.info("User {} has no role to gain access restricted area", namaUser);
// response.setHeader("RequireSupervisor", "false");
// response.setHeader(Constants.MessageInfo.ERROR_MESSAGE,
// "User " + namaUser + " has no role to gain access restricted area");
// response.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
// return false;
} else if (resultKelompokUser == -1){
LOG.warn("Sementara defaultnya diloloskan semuanya di AppInterceptor jika tidak ada di dalam daftar Map objek modul to kelompok user..");
return true; // Defaultnya diloloskan semuanya...
// LOG.info("User {} has no access to module application", namaUser);
// response.setHeader("RequireSupervisor", "false");
// response.setHeader(Constants.MessageInfo.ERROR_MESSAGE,
// "User " + namaUser + " has no access to module application");
// response.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
// return false;
} else if (resultKelompokUser == 0) {
LOG.info("User {} has need superVisor for action in {} module application", namaUser, action);
if (resultKelompokUser == -2) {
return true;
} else if (resultKelompokUser == -1) {
return true;
} else if (resultKelompokUser == 0) {
response.setHeader("RequireSupervisor", "true");
response.setHeader(Constants.MessageInfo.ERROR_MESSAGE, "Action requires supervisor");
response.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
@ -310,113 +203,54 @@ public class AppInterceptor implements HandlerInterceptor {
response.setHeader(Constants.MessageInfo.INFO_MESSAGE, "Supervise execution success");
response.setStatus(HttpServletResponse.SC_OK);
return true;
}
}
}
/*
* return true untuk valid permission request ke controller method
*/
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
////// Syamsu /////
// TUTUP DULU PENGGUNAANNYA...
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) {
HandlerMethod hm;
Method method = null;
// int methodApp = AppPermission.VIEW;
Method method;
response.setHeader("Access-Control-Expose-Headers", "RequireSupervisor" + ","
+ Constants.MessageInfo.ERROR_MESSAGE + "," + Constants.MessageInfo.INFO_MESSAGE);
////// Syamsu /////
String AlamatUrlForm = request.getHeader(Constants.HttpHeader.URL_FORM) == null ? "": request.getHeader(Constants.HttpHeader.URL_FORM);
// Buat Om, Kang, Aa Reza terkait Security Role
//String KdRuangan = null;
String KdRuangan = request.getHeader(Constants.HttpHeader.KD_RUANGAN) == null ? "": request.getHeader(Constants.HttpHeader.KD_RUANGAN);
String AlamatUrlForm = request.getHeader(Constants.HttpHeader.URL_FORM) == null ? ""
: request.getHeader(Constants.HttpHeader.URL_FORM);
String KdRuangan = request.getHeader(Constants.HttpHeader.KD_RUANGAN) == null ? ""
: request.getHeader(Constants.HttpHeader.KD_RUANGAN);
int action = AppPermission.VIEW;
if (CommonUtil.isNullOrEmpty(AlamatUrlForm)){
//LOG.warn("Sementara defaultnya di loloskan semuanya di AppInterceptor jika tidak ada header 'AlamatUrlForm' ..");
return true; // Lewatin dulu sementara;
}
if (CommonUtil.isNullOrEmpty(KdRuangan) || "0".equals(KdRuangan)){
LOG.warn("Sementara defaultnya diloloskan semuanya di AppInterceptor jika tidak ada header 'KdRuangan' atau header 'KdRuangan'nya 0 ..");
return true; // Lewatin dulu sementara;
}
//String headerAction = request.getHeader(Constants.HttpHeader.ACTION) == null ? "" : request.getHeader(Constants.HttpHeader.ACTION);
if (CommonUtil.isNullOrEmpty(AlamatUrlForm))
return true;
if (CommonUtil.isNullOrEmpty(KdRuangan) || "0".equals(KdRuangan))
return true;
String URI = request.getRequestURI();
String methodHttp = request.getMethod();
try {
// Alter modified Syamsu
if (handler instanceof org.springframework.web.method.HandlerMethod) {
hm = (HandlerMethod) handler;
method = hm.getMethod();
} else {
return checkAuthSecure(request, response, AlamatUrlForm, true);
}
// AlamatUrlForm // Alter modified Syamsu
boolean usingAnno = method != null && method.isAnnotationPresent(AppPermission.class);
boolean postM = "POST".equals(methodHttp);
boolean signInOut = !URI.contains("auth/sign-in") && !URI.contains("auth/sign-out");
boolean getM = "GET".equals(methodHttp);
boolean cetak = contains (URI, PRINT_PATTERN);
/*(URI.contains("/lap_") || URI.contains("/lap-") || URI.contains("/lap")
|| URI.contains("/cetak_") || URI.contains("/print_") || URI.contains("/cetak-")
|| URI.contains("/print-"));*/
boolean simpan = contains (URI, ADD_PATTERN);
/*(URI.contains("/save_") || URI.contains("/add_") || URI.contains("/simpan_")
|| URI.contains("/save-") || URI.contains("/add-") || URI.contains("/simpan-"));*/
boolean ubah = contains (URI, UPDATE_PATTERN);
/*(URI.contains("/update_") || URI.contains("/edit_") || URI.contains("/ubah_")
|| URI.contains("/update-") || URI.contains("/edit-") || URI.contains("/ubah-"));*/
boolean hapus = contains (URI, DELETE_PATTERN);
/*(URI.contains("/delete_") || URI.contains("/hapus_") || URI.contains("/delete-")
|| URI.contains("/hapus-")); */
boolean cetak = contains(URI, PRINT_PATTERN);
boolean simpan = contains(URI, ADD_PATTERN);
boolean ubah = contains(URI, UPDATE_PATTERN);
boolean hapus = contains(URI, DELETE_PATTERN);
if (usingAnno) {
if (method.getAnnotation(AppPermission.class) != null) {
if (method.getAnnotation(AppPermission.class) != null)
action = method.getAnnotation(AppPermission.class).value();
}
if (AppPermission.SPECIALS == action /* && "#/home".equals(AlamatUrlForm) */) {
if (AppPermission.SPECIALS == action)
return true;
}
}
if (getM && cetak) {
action = AppPermission.PRINT;
// if (headerAction != null && !"".equals(headerAction)) {
// action = headerActionToAction(headerAction);
// }
if (method.getAnnotation(AppPermission.class) != null) {
if (method != null && method.getAnnotation(AppPermission.class) != null)
action = method.getAnnotation(AppPermission.class).value();
}
return checkPermission(request, response, AlamatUrlForm, action);
}
if ((usingAnno || postM) && signInOut) {
if (simpan) {
action = AppPermission.ADD;
} else if (ubah) {
@ -426,345 +260,104 @@ public class AppInterceptor implements HandlerInterceptor {
} else if (cetak) {
action = AppPermission.PRINT;
}
// if (headerAction != null && !"".equals(headerAction)) {
// action = headerActionToAction(headerAction);
// }
if (method.getAnnotation(AppPermission.class) != null) {
if (method != null && method.getAnnotation(AppPermission.class) != null)
action = method.getAnnotation(AppPermission.class).value();
}
return checkPermission(request, response, AlamatUrlForm, action);
}
} catch (Exception e) {
e.printStackTrace();
System.out.println("Not Found " + request.getRequestURL());
LOG.info("Error accured unauthorized");
response.setHeader(Constants.MessageInfo.ERROR_MESSAGE, "Something wrong happened");
response.setHeader("RequireSupervisor", "false");
response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
return false;
}
// TUTUP DULU PENGGUNAANNYA...
return true;
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object obj, ModelAndView mav) throws Exception {}
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object obj, ModelAndView mav) {
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object obj, Exception ex) throws Exception {
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object obj, Exception ex)
throws Exception {
String AlamatUrlForm = request.getHeader(Constants.HttpHeader.URL_FORM) == null ? ""
: request.getHeader(Constants.HttpHeader.URL_FORM);
String KdRuangan = request.getHeader(Constants.HttpHeader.KD_RUANGAN) == null ? ""
: request.getHeader(Constants.HttpHeader.KD_RUANGAN);
String idRuanganTujuan = request.getHeader(Constants.HttpHeader.KD_RUANGAN_T) == null ? ""
: request.getHeader(Constants.HttpHeader.KD_RUANGAN_T);
String idRuanganTujuanA = request.getHeader(Constants.HttpHeader.KD_RUANGAN_A) == null ? ""
: request.getHeader(Constants.HttpHeader.KD_RUANGAN_A);
String tglKirim = request.getHeader(Constants.HttpHeader.TGL_KIRIM) == null ? ""
: request.getHeader(Constants.HttpHeader.TGL_KIRIM);
boolean notHttpOK = response.getStatus() >= HttpServletResponse.SC_BAD_REQUEST;
boolean notLewatMenu = CommonUtil.isNullOrEmpty(AlamatUrlForm) || CommonUtil.isNullOrEmpty(KdRuangan);
Integer ruanganAsalId = 0;
try {
ruanganAsalId = Integer.parseInt(KdRuangan);
}catch(Exception e){
ex = e;
}
Integer ruanganAsalId = Integer.parseInt(KdRuangan);
boolean adaError = CommonUtil.isNotNullOrEmpty(ex);
if (notHttpOK || notLewatMenu || adaError){
if (notHttpOK || notLewatMenu || adaError)
return;
}
Authentication authentication = tokenAuthenticationService.getAuthentication(request);
if (CommonUtil.isNullOrEmpty(authentication)){
if (CommonUtil.isNullOrEmpty(authentication))
return;
}
namaUser = authentication.getName();
loginUser = loginUserDao.findByNamaUser(namaUser);
if (CommonUtil.isNullOrEmpty(loginUser)) {
if (CommonUtil.isNullOrEmpty(loginUser))
return;
}
String potongan = filterUrlForm(AlamatUrlForm);
List<ObjekModulAplikasiVO> objekModulAplikasiVOs = objekModulAplikasiService.findByAlamatUrlForm(potongan);
if (CommonUtil.isNullOrEmpty(objekModulAplikasiVOs)){
if (CommonUtil.isNullOrEmpty(objekModulAplikasiVOs))
return;
}
String URI = request.getRequestURI();
Integer objekModulAplikasId = objekModulAplikasiVOs.get(0).getId();
List<NotifMessagingVO> notifMessagingVOs = notifMessagingService.findByObjekModulAplikasiIdAndUrlBackEndOrUrlBackEndIsNull(objekModulAplikasId, URI);
if (CommonUtil.isNullOrEmpty(notifMessagingVOs)) {
List<NotifMessagingVO> notifMessagingVOs = notifMessagingService
.findByObjekModulAplikasiIdAndUrlBackEndOrUrlBackEndIsNull(objekModulAplikasId, URI);
if (CommonUtil.isNullOrEmpty(notifMessagingVOs))
return;
}
Integer notifMessagingId = notifMessagingVOs.get(0).getId();
if (CommonUtil.isNullOrEmpty(tglKirim)) {
List<Integer> ruanganTujuansId = new ArrayList<>();
System.out.println("--");
if (!"".equals(idRuanganTujuan)){
if (!"".equals(idRuanganTujuan)) {
JSONArray ruanganTujuanIds = new JSONArray(idRuanganTujuan);
for (int i=0; i<ruanganTujuanIds.length(); i++){
for (int i = 0; i < ruanganTujuanIds.length(); i++) {
Integer ruanganTujuanId = ruanganTujuanIds.optInt(i, 0);
ruanganTujuansId.add(ruanganTujuanId);
}
}
}
if (!"".equals(idRuanganTujuanA) && ruanganTujuansId.isEmpty()) {
JSONArray ruanganTujuanIds = new JSONArray(idRuanganTujuanA);
for (int i=0; i<ruanganTujuanIds.length(); i++){
for (int i = 0; i < ruanganTujuanIds.length(); i++) {
Integer ruanganTujuanId = ruanganTujuanIds.optInt(i, 0);
ruanganTujuansId.add(ruanganTujuanId);
}
}
MessagePublisher.RabbitHole rabbitHole = messagePublisher.getRabbitHole();
Pegawai pegawai = loginUser.get(0).getPegawai();
Ruangan ruanganAsal = ruanganDao.findById(ruanganAsalId);
if (ruanganTujuansId.size() > 0){
try{
rabbitHole.sendNotif(rabbitHole, ruanganAsal, pegawai, notifikasiMessageObjekModulService, notifMessagingId, ruanganTujuansId);
}catch(Exception e){
e.printStackTrace();
LOG.info(DateUtil.now()+" send notif dari Ruangan {} dengan ruanganId {} pada notifMessageId {} ada masalah {}",
ruanganAsal.getNamaRuangan(), ruanganAsalId, notifMessagingId, e.getMessage());
}
}
if (!ruanganTujuansId.isEmpty())
rabbitHole.sendNotif(rabbitHole, ruanganAsal, pegawai, notifikasiMessageObjekModulService,
notifMessagingId, ruanganTujuansId);
} else {
JSONArray tglKirims = new JSONArray(tglKirim);
JSONArray ruanganTujuanIds = new JSONArray(idRuanganTujuan);
SimpleDateFormat myFormat = new SimpleDateFormat("yyyy-MM-dd");
for (int i=0; i<tglKirims.length(); i++){
for (int i = 0; i < tglKirims.length(); i++) {
String ctglKirim = tglKirims.optString(i, "");
Integer cRuanganTujuanId = ruanganTujuanIds.optInt(i,0);
Integer cRuanganTujuanId = ruanganTujuanIds.optInt(i, 0);
Date date = myFormat.parse(ctglKirim);
NotifMessagingSchedulerVO vo = new NotifMessagingSchedulerVO();
vo.setTglKirim(date);
vo.setTerkirim(false);
vo.setNotifMessagingId(notifMessagingId);
vo.setRuanganIdAsal(ruanganAsalId);
vo.setRuanganIdTujuan(cRuanganTujuanId);
vo.setPegawaiId(loginUser.get(0).getPegawai().getId());
vo.setKdProfile((short)0);
vo.setKdProfile((short) 0);
vo.setKodeExternal("");
vo.setNamaExternal("");
vo.setReportDisplay("");
vo.setStatusEnabled(true);
notifMessagingSchedulerService.add(vo);
}
}
}
// <T extends BaseMasterVO> T convertToVO(T t, Object o){
// BeanUtils.copyProperties(t, o);
// return t;
// }
// try{
//
//
// String AlamatUrlForm =
// request.getHeader(Constants.HttpHeader.URL_FORM) == null ? "" :
// request.getHeader(Constants.HttpHeader.URL_FORM);
// String KdRuangan = request.getHeader(Constants.HttpHeader.KD_RUANGAN)
// == null ? "" : request.getHeader(Constants.HttpHeader.KD_RUANGAN);
//
// Authentication authentication =
// tokenAuthenticationService.getAuthentication(request);
//
// namaUser = authentication.getName();
// loginUser = loginUserDao.findByNamaUser(namaUser);
//
//
// if (loginUser.isEmpty()) {
// publisher.BroadcastMessage(KdRuangan, namaUser, AlamatUrlForm);
// }
//
//
//
//
//// String routingKeyAndQueueName = "ruanganId." + KdRuangan;
////
//// publisher.sendRabbitMQNotification("127.0.0.1", "ruanganId." +
// KdRuangan, "Kd Ruangan : " + KdRuangan + ", AlamatUrlForm : " +
// AlamatUrlForm);
////
//// subscriber.startRabbitMQNotification("127.0.0.1",
// routingKeyAndQueueName);
//// subscriber.listenRabbitMQNotification(routingKeyAndQueueName,
// subscriber.getDefaultConsumer(), false);
//// subscriber.stopRabbitMQNotification();
//
// }catch(Exception e){
// //e.printStackTrace();
// }
// //String urlSocket = messagePublisher.GetSettingDataFixed("UrlRabbitMQMessaging"); sementara kunci dulu.
//
// String urlSocket = "127.0.0.1";
//
// List<NotifikasiMessageObjekModulVO> notifikasiMessageObjekModulVOs = notifikasiMessageObjekModulService.findByNotifMessagingIdAndRuanganId(notifMessagingId, ruanganTujuansId);
//
// if (CommonUtil.isNullOrEmpty(notifikasiMessageObjekModulVOs)) {
// return;
// }
//
// Integer ruanganIdtemp = 0;
// boolean connect = false;
//
// for (NotifikasiMessageObjekModulVO vo : notifikasiMessageObjekModulVOs){
// Ruangan ruangan = vo.getRuangan();
// ModulAplikasi modulAplikasi = vo.getModulAplikasi();
// ObjekModulAplikasi objekModulAplikasi = vo.getObjekModulAplikasi();
// String customURLObjekModul = vo.getCustomURLObjekModul();
// String titleNotifikasi = vo.getTitleNotifikasi();
// String pesanNotifikasi = vo.getPesanNotifikasi();
// String namaFungsiFrontEnd = vo.getNamaFungsiFrontEnd();
//
// if (ruangan.getId() == ruanganId){
// continue;
// }
//
// RuanganVO dariRuangan = ruanganService.findById(ruanganId);
//
// if (ruanganIdtemp != ruangan.getId()){
// if (connect){
// rabbitHole.close();
// }
// rabbitHole.connect(urlSocket, String.valueOf(ruangan.getId()));
// connect = true;
// ruanganIdtemp = ruangan.getId();
// }
//
// Map<String, Object> map = new HashMap<>();
// map.put("title", titleNotifikasi);
// map.put("dariRuangan", dariRuangan);
// map.put("ruanganId", ruangan.getId());
// map.put("ruangan", convertToVO(new RuanganVO(), ruangan));
// map.put("modulAplikasi", convertToVO(new ModulAplikasiVO(), modulAplikasi));
// map.put("objekModulAplikasi", convertToVO(new ObjekModulAplikasiVO(), objekModulAplikasi));
// map.put("titleNotifikasi", titleNotifikasi);
// map.put("pesanNotifikasi", pesanNotifikasi);
// map.put("namaFungsiFrontEnd", namaFungsiFrontEnd);
// map.put("fromPegawai", loginUser.get(0).getPegawai());
// map.put("urlForm",CommonUtil.isNullOrEmpty(customURLObjekModul)? objekModulAplikasi.getAlamatUrlForm() : customURLObjekModul);
//
// rabbitHole.sendRabbitMQNotification(gson.toJson(map));
//
// //messagePublisher.BroadcastMessage(map);
// }
// if (connect){
// rabbitHole.close();
// }
// private static final TypeAdapterFactory FACTORY = new TypeAdapterFactory() {
// @Override
// @SuppressWarnings("unchecked")
// public <T> TypeAdapter<T> create(Gson gson, TypeToken<T> type) {
// return (HibernateProxy.class.isAssignableFrom(type.getRawType())
// ? (TypeAdapter<T>) new HibernateProxyTypeAdapter((TypeAdapter)gson.getAdapter(TypeToken.get(type.getRawType().getSuperclass())))
// : null);
// }
// };
//
//
// private static final class HibernateProxyTypeAdapter extends TypeAdapter<HibernateProxy> {
//
// private final TypeAdapter<Object> delegate;
//
// private HibernateProxyTypeAdapter(TypeAdapter<Object> delegate) {
// this.delegate = delegate;
// }
//
// @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;
// }
//
//
//
// delegate.write(out, ((HibernateProxy) value).getHibernateLazyInitializer().getImplementation());
// }
// }
}
/*
* else if (method.isAnnotationPresent(AppMenuPermision.class)){
*
* Authentication authentication =
* tokenAuthenticationService.getAuthentication(request);
*
* String namaUser = authentication.getName();
*
* List<LoginUser> loginUser =
* loginUserDao.findByNamaUser(namaUser);
*
* if (loginUser.isEmpty()) { // untuk testing false
* response.addHeader("Access-Control-Expose-Headers",
* "content-type");
* response.setHeader(Constants.MessageInfo.ERROR_MESSAGE, "User " +
* namaUser + " can not access current menu ");
* response.setStatus(HttpServletResponse.SC_UNAUTHORIZED); return
* false; }
*
* // get user login if (!loginUser.isEmpty()) { LoginUser user =
* loginUser.get(0); }else{ LOG.info("User {} is unauthorized",
* namaUser);
* response.setHeader(Constants.MessageInfo.ERROR_MESSAGE,
* "User is unauthorized");
* response.setStatus(HttpServletResponse.SC_UNAUTHORIZED); return
* false; } }
*/

View File

@ -1,15 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:p="http://www.springframework.org/schema/p"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd">
<bean id="tokenAuthenticationService" class="com.jasamedika.medifirst2000.security.service.TokenAuthenticationService" />
<!-- Configures interceptor -->
<mvc:interceptors>
<bean class="com.jasamedika.medifirst2000.interceptor.AppInterceptor" />
</mvc:interceptors>
</beans>